Search
Duplicate

13번 문제 정답

해설

초기화 블록의 호출은 생성자의 호출보다 먼저 일어난다.
따라서 생성자 실행의 출력 이전에 initializer block 실행이 먼저 출력되게 된다.
하지만 static 변수의 경우 객체 생성 이전에도 접근이 가능하고, static 변수에 접근하는 순간 class가 메모리에 올라가게 되고, static initializer가 실행되게 된다.
참고
아래와 같이 객체 생성 이전에 static 변수의 접근이 없다면, 객체 생성 시 메모리에 올라가면서 static 변수의 초기화가 일어난다. (static 초기화블럭 → 일반 초기화 블럭 → 생성자 순서)
public class BasicProblem_05 { public static void main (String[] args) throws java.lang.Exception { //System.out.println(Test.b); System.out.println("--------객체 생성 전--------"); Test t = new Test(); System.out.println("--------객체 생성 후--------"); } }
Java
복사