머리에 올바른 자바 초기화 메커니즘 모델이 있는지 확실하지 않습니다. 각 클래스는 다음 다음 : 그 값이정적 멤버가있는 java 초기화 순서
- 정적 초기화 및 인스턴스 변수 : 하나
- 가 자신에게 초기화가 존재하는 경우
- 는 슈퍼 클래스를 초기화를
초기화는 다음과 다음 이니셜 라이저 외부에 설정하십시오.
- 실행 정적 초기화 블록
- 실행 생성자 블록
는 정밀/정확합니까?
머리에 올바른 자바 초기화 메커니즘 모델이 있는지 확실하지 않습니다. 각 클래스는 다음 다음 : 그 값이정적 멤버가있는 java 초기화 순서
초기화는 다음과 다음 이니셜 라이저 외부에 설정하십시오.
는 정밀/정확합니까?
코드는 다음과 같이 실행 -
정적 초기화 블록을 한 번 실행, 클래스가 처음로드 될 때.
모든 슈퍼 생성자
변수 정적.인스턴스 초기화 블록은 생성자가 super()를 호출 한 후 실행됩니다.
인스턴스 변수.
(초기화 블록은 나타나는 순서대로 실행됩니다.)
정적 init 블록이 정적 변수보다 먼저 실행된다는 보장은 없습니다. 실제로 많은 정적 변수 (최종적이며 컴파일 타임 상수 표현식을 가진 정적 변수)는 정적 초기화 블록 앞에 할당됩니다. – henko
Java language specification에 따르면 가정은 다소 정확합니다. 도하기 전에로드 된 클래스가 초기화 된 후 클래스 (함께 생성자를) 구성 할 때
그냥 단락 1을 기대한다고 적어 두었습니다 –
그것도 기대합니다, 나는 방금 정적 변수와 인스턴스 변수가 클래스 생성 전에 함께 초기화된다고 가정합니다. – henko
개체를 초기화하고 클래스를로드하는 데 차이가 있습니다. 정적 멤버는 클래스가로드 될 때 초기화되고 비 정적 멤버는 객체가 만들어 질 때 초기화됩니다. – scravy
"초기화"라고하는 것에주의하십시오 – UmNyobe
아마도 http://stackoverflow.com/questions/3499214/java-static-class-initialization의 복제본 –