본문 바로가기

자바의 정석 정리

자바의 정석 - 6.9 변수의 초기화

6.9.1 변수의 초기화

  • 멤버변수(클래스 및 인스턴스 변수)는 타입에 맞게 자동으로 초기화가 되지만, '지역변수' 자동으로 초기화가 되지 않으므로 사용 전에 초기화가 필요하다.

6.9.2 멤버변수 초기화 방법

  1. 명시적 초기화(explicit initialzation)
  2. 생성자(constructor)
  3. 초기화 블럭(initialzation block)
    • 인스턴스 초기화 블럭 : 인스턴스 변수 초기화
    • 클래스 초기화 블럭 : 클래스 변수 초기화

6.9.3 명시적 초기화

  • 선언과 동시에 초기화하는 방법
class Car{
    int door = 4;
}

6.9.4 초기화 블럭

  • 인스턴스 초기화 블럭
    • 인스턴스가 생성될 때마다 실행됨
    • 생성자보다 먼저 실행됨
  • 클래스 초기화 블럭
    • 메모리에 클래스가 로딩될 때 한 번만 실행됨
class BlockTest{
    static{ //클래스 초기화 블럭

    }

    { //인스턴스 초기화 블럭
    }

    public void BlockTest(){ //생성자

    }
}

class MainClass{
    public static void main(String[] args){
        BlockTest b1 = new BlockTest();
    }
}

/*
1. 클래스 초기화 블럭
2. 인스턴스 초기화 블럭
3. 생성자
*/

6.9.5 멤버변수의 초기화 시기

  • 클래스 변수 초기화 시점 : 클래스가 처음 로딩될 때 한번만 실행
  • 인스턴스 변수 초기화 시점 : 인스턴스가 새로 생성될 때 마다

6.9.6 멤버변수의 초기화 순서

  • 클래스 변수의 초기화 순서 : 기본값 → 명시적 초기화 → 클래스 초기화 블럭
  • 인스턴스 변수의 초기화 순서 : 기본값 → 명시적 초기화 → 인스턴스 초기화 블럭 → 생성자