static 변수 선언부 -> 필드 변수 선언부 -> 생성자 block
static 변수 선언부
Method area
에 올라감- 클래스가 로드될 때 변수가 가장 먼저 초기화됨
필드 변수 선언부
Heap area
에 올라감- 객체 생성될 떼 생성자 block보다 앞서 초기화됨
생성자 block
Heap area
에 올라감- 객체 생성될 때 JVM이 내부적으로 locking 필드 변수 중 finla 변수의 가시화는 생성자 block이 끝난 다음 초기화 됨
- 필드 변수 선언부에서 이미 초기화되었다면 그 값들을 덮어씀
클래스 변수
- 클래스가 처음 로딩될 때 단 한번 초기화
인스턴스 변수
- 인스턴스가 생성될 때마다 각 인스터스별로 초기화가 이루어짐
클래스 변수
- 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭
인스턴스 변수
- 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자