2009-12-02 7 views
22

이것은 무엇입니까? Java 이름 정적 메소드

public class ABC { 
    public ABC() { 
     System.out.println("world"); 
    } 
    static { 
     System.out.println("hello"); 
    } 
} 

인쇄됩니다 : 내가 정말 이해가 안 안녕하세요 세계

, 또는 정적 코드는 방법의 종류.

답변

48

정적 초기화 블록이라고합니다.

클래스가 처음로드 될 때 실행됩니다. 한 번만.

예를 들어, 생성자는 클래스가 인스턴스화 될 때마다 실행됩니다. 정적 블록은 VM/클래스 로더에 의해 정적으로 처음로드 될 때 한 번만 실행됩니다.

+0

정적 이니셜 라이저에 대한 JLS 설명은 [this] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.7) 및 [this] (중요하게 될 수있는 초기화 순서에 대한 JLS 설명은 http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4.2)를 참조하십시오. – selig

7

정적 블록이 클래스 로더가 클래스를로드 할 때마다 정확히 한 번 실행된다는 점은 가치가 있다고 생각합니다. 즉, 클래스 로더가 둘 이상인 경우 블록이 두 번 이상 실행될 수 있습니다.