티스토리 뷰

static 변수와 static 메소드는 static 메모리 영역에 존재합니다. (자바의 메모리 영역은 다음 글에서 다룹니다.)

객체가 생성되기 전에 이미 할당이 되어있기 때문에 객체 생성없이 바로 접근할 수 있습니다.

 

static 변수

  • 클래스 변수 : 클래스가 정의만 되어도 접근이 가능한 변수

  • application이 실행되면 모두 메모리에 할당되고, 종료되면 삭제되는 변수

메모리 할당을 딱 한 번만 하게 되어 메모리 사용에 이점을 볼 수 있습니다.

또한, 해당 클래스에 의해 생성된 모든 객체에 의해 공유될 수 있습니다.

 

인스턴스 변수의 경우 ( non-static )

public class Test {
	int num = 0;
    
    public Test() {
    	num++;
        System.out.println(num);
    }
}

실행 결과

클래스 변수의 경우 ( static )

public class STest {
	static int snum = 0;
    
    public STest() {
    	snum++;
        System.out.println(snum);
    }
}

실행 결과

-> static으로 선언한 snum의 값이 공유되어 증가된 결과값이 나오게 되었습니다.

 

 

static 메소드

  • 객체를 생성하지 않아도 호출할 수 있는 메소드

  • 대표적으로 java.util.Math 가 있습니다.

static과 non-static

최근에 올라온 글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday