오늘은 자바에서 지역, 인스턴스 클래스 변수가 어떤 차이점이 있는지 확실히 알아보자 !
확실히 개념을 이해했다면 자바 JVM 메모리 구조도 같이 보는 것을 추천합니다.

아래 예제에서 Variable 인스턴스를 두 개 생성한 후 T1 클래스 변수와 인스턴스 변수를 수정해보았다.
클래스 변수 Weight 은 처음 한 번만 생성되고 동일한 객체를 T1 과 T2 에서 서로 공유하기 때문에 양쪽이 동시에 바뀌었지만 Price는 객체 생성 시 마다 매번 새로 메모리에 할당되기 때문에 T1.Weight 만 변경된 것을 확인할 수 있다.
출력 결과
1. 100, 50
2. 100, 50
- 200, 100
- 200, 50
실제 static 멤버의 생성 시점은 JVM에 따라 다르다.
보통 JVM은 필요한 대부분의 클래스를 처음부터 로딩하기 때문에 static멤버의 생성 시점은 JVM이 시작되는 시점이라고 할 수 있다.

static 메소드는 오직 static멤버만 접근 가능
static메소드도 static멤버와 로드되는 시점이 동일하기 때문에 객체가 생성되지 않은 상황에서도 변수를 사용할 수 있어야 한다.