[예제6-20] BlockTest.java |
class BlockTest { // 클래스 초기화 블럭 static { System.out.println("static { }"); } // 인스턴스 초기화 블럭 { System.out.println("{ }"); } // 생성자 public BlockTest() { System.out.println("생성자"); } public static void main(String args[]) { System.out.println("BlockTest bt = new BlockTest(); "); BlockTest bt = new BlockTest(); System.out.println("BlockTest bt2 = new BlockTest(); "); BlockTest bt2 = new BlockTest(); } } |
[실행결과] |
static { } BlockTest bt = new BlockTest(); { } 생성자 BlockTest bt2 = new BlockTest(); { } 생성자 |
BlockTest가 실행되면서 메모리에 로딩될 때, 클래스 초기화 블럭이 가장 먼저 수행되어 "static { }"이 화면에 출력된다. 그 다음에 main메서드가 수행되어 BlockTest인스턴스가 생성되면서 인스턴스 초기화 블럭이 먼저 수행되고, 그 다음에 생성자가 수행된다.
위의 실행결과에서도 알 수 있듯이 클래스 초기화 블럭은 처음 메모리에 로딩될 때 한번만 수행되었지만, 인스턴스 초기화 블럭은 인스턴스가 생성될 때 마다 수행되었다.