아래 코드를보고 약간 이상한 것을 발견했습니다.
public class Sequence {
Sequence() {
System.out.print("c ");
}
{
System.out.print("y ");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g ");
}
static {
System.out.print("x ");
}
}
System.out
with "y"가 메서드 선언에 속하지 않기 때문에 컴파일 오류가 발생할 것으로 예상 했습니다 { }
. 이것이 유효한 이유는 무엇입니까? 이 코드가 어떻게 호출되어야하는지 모르겠습니다.
이것을 실행할 x y c g
때도 생성됩니다 . 왜 static { }
시퀀스 생성자보다 먼저 get이 호출됩니까?