클래스 변수와 인스턴스 변수
클래스 변수, 인스턴스 변수
클래스 변수(Static 멤버)
- 클래스 내에
Static키워드로 선언된 변수 - 처음 JVM이 실행되어 클래스가 메모리에 올라갈 때 ~ 프로그램이 종료될 때까지 유지
- 클래스가 여러 번 생성되어도
Static변수는 처음 딱 한 번만 생성됨 - 동일한 클래스의 모든 객체들에 의해서 공유됨
인스턴스 변수(Non-static 멤버)
- 클래스 내에 선언된 변수
- 객체 생성 시마다 매번 새로운 변수가 생성됨
- 클래스 변수와 달리 공유되지 않음
메모리에 적재되는 위치
public static class StaticTest {
static int classVar = 10;
int instanceVar = 28;
public void method() {
int localvar = -100;
System.out.println(localvar);
}
}
staticTest1,staticTest2두 객체를 생성했을 때 new()로 생성된 두 객체가 각각 Heap에 할당되고 각 객체를 가리키는staticTest1변수와staticTest2변수가 stack에 생성된다.- 인스턴스 변수와 지역변수는 객체가 생성될 때마다 Stack영역에 매번 새로 생성되지만 클래스 변수는 Static Area에 한 개만 생성되고 하나의 영역을 공유한다.

참고