Android/JAVA 기본문법

클래스와 인스턴스의 초기화 블록

gandus 2010. 5. 12. 16:37
[예제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인스턴스가 생성되면서 인스턴스 초기화 블럭이 먼저 수행되고, 그 다음에 생성자가 수행된다.
위의 실행결과에서도 알 수 있듯이 클래스 초기화 블럭은 처음 메모리에 로딩될 때 한번만 수행되었지만, 인스턴스 초기화 블럭은 인스턴스가 생성될 때 마다 수행되었다.