멤버변수는 초기화를 하지 않아도 변수의 자료형에 맞는 기본값으로 초기화가 이루어진다.
지역변수는 사용하기 전에 반드시 초기화해야 한다.
클래스 초기화 블럭은 클래스 변수의 초기화에 사용된다.
인스턴스 초기화 블럭은 인스턴스 변수의 초기화에 사용된다.
public class Main {
static { // 클래스 초기화 블럭
System.out.println("static { }");
}
{ // 인스턴스 초기화 블럭
System.out.println("{ }");
}
public static void main(String[] args) {
System.out.println("Main main = new Main()");
Main main = new Main();
}
}
실행 결과
클래스 변수의 초기화 시점: 클래스가 처음 로딩될 때 단 한번 초기화 된다.
클래스 변수의 초기화 순서: 기본값 → 명시적 초기화 → 클래스 초기화 블럭
인스턴스 변수의 초기화 시점: 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.
인스턴스 변수의 초기화 순서: 기본값 → 명시적 초기화 → 인스턴스 초기화 블럭 → 생성자