2012-07-17 2 views
4

가능한 중복은 :
Static Block in Java자바`static {}`키워드 자체는 무엇입니까?

나는 static의 다음 사용을 가로 질러 와서 그것이 무엇을 알아낼하지 않았다. 예를 들어 static String hello = "World";을 사용하고 있음을 알고 있지만 다음 내용을 이해할 수 없습니다.

static { 
    loadFromProperties(new Properties()); 
} 
+0

프로그램의 정적 블록은 VM이 초기화 될 때 가장 먼저 실행됩니다. 특히, 정적 블록은 정적 상수를 초기화하는 데 사용됩니다. public static final int MAX_ITER; 정적 { int dummyMaxIter = AClass.calculateABC(); if (dummyMaxIter> = 0) { MAX_ITER = dummyMaxIter; } else { MAX_ITER = 0; } } 위의 세그먼트를 참조하십시오. 'AClass.calculateABC()'에서 직접'MAX_ITER'를 초기화 할 수 있습니다. 그러나 할당하기 전에'AClass.calculateABC()'가 반환 한 값의 유효성을 검사해야합니다. – Mohan

+0

네 말이 맞아. 이건 중복 된거야. 미안합니다. – dokaspar

답변

8

static initializer이라고합니다. 클래스가 초기화 될 때 실행되는 코드 블록입니다.

관련 질문 (실제로 아마 DUP는) :

+0

은 인스턴스화와 다른 초기화입니까? – NimChimpsky

+5

@NimChimpsky : * 클래스 * 초기화는 인스턴스가 생성되기 전에 발생합니다 (인스턴스 생성). –

3

이 정적 블록이라고합니다. 클래스가로드/초기화 될 때 인스턴스화되기 전에 실행됩니다. 정적 멤버/필드를 초기화하려면 다음을 사용할 수 있습니다.

+0

실제로 클래스가 초기화 될 때 실행됩니다 *. (실제로는 차이점을 거의 눈치 채지 못합니다.) – aioobe

+0

감사합니다. @aioobe. :) –