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