나는 static
의 다음 사용을 가로 질러 와서 그것이 무엇을 알아낼하지 않았다. 예를 들어 static String hello = "World";
을 사용하고 있음을 알고 있지만 다음 내용을 이해할 수 없습니다.
static {
loadFromProperties(new Properties());
}
나는 static
의 다음 사용을 가로 질러 와서 그것이 무엇을 알아낼하지 않았다. 예를 들어 static String hello = "World";
을 사용하고 있음을 알고 있지만 다음 내용을 이해할 수 없습니다.
static {
loadFromProperties(new Properties());
}
은 인스턴스화와 다른 초기화입니까? – NimChimpsky
@NimChimpsky : * 클래스 * 초기화는 인스턴스가 생성되기 전에 발생합니다 (인스턴스 생성). –
이 정적 블록이라고합니다. 클래스가로드/초기화 될 때 인스턴스화되기 전에 실행됩니다. 정적 멤버/필드를 초기화하려면 다음을 사용할 수 있습니다.
실제로 클래스가 초기화 될 때 실행됩니다 *. (실제로는 차이점을 거의 눈치 채지 못합니다.) – aioobe
감사합니다. @aioobe. :) –
프로그램의 정적 블록은 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
네 말이 맞아. 이건 중복 된거야. 미안합니다. – dokaspar