Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 1.14 KB

23_Initialization_Order_of_Member_Variables.md

File metadata and controls

37 lines (27 loc) · 1.14 KB

Initialization Order of Member Variables


멤버 변수 초기화 순서

static 변수 선언부 -> 필드 변수 선언부 -> 생성자 block

  • static 변수 선언부
    • Method area 에 올라감
    • 클래스가 로드될 때 변수가 가장 먼저 초기화됨
  • 필드 변수 선언부
    • Heap area 에 올라감
    • 객체 생성될 떼 생성자 block보다 앞서 초기화됨
  • 생성자 block
    • Heap area 에 올라감
    • 객체 생성될 때 JVM이 내부적으로 locking 필드 변수 중 finla 변수의 가시화는 생성자 block이 끝난 다음 초기화 됨
    • 필드 변수 선언부에서 이미 초기화되었다면 그 값들을 덮어씀

초기화 시점

  • 클래스 변수
    • 클래스가 처음 로딩될 때 단 한번 초기화
  • 인스턴스 변수
    • 인스턴스가 생성될 때마다 각 인스터스별로 초기화가 이루어짐

초기화 순서

  • 클래스 변수
    • 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭
  • 인스턴스 변수
    • 기본값 -> 명시적 초기화 -> 인스턴스 초기화 블럭 -> 생성자