我正在查看下面的代码,发现了一些有点奇怪的东西:
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 ");
}
}
我原以为会出现编译错误,因为带“ y”的 System.out
不属于仅仅是 { }
的方法声明。这为什么有效?我不知道该如何调用这个代码。
当运行这个函数时,它也会产生 x y c g
,为什么在序列构造函数之前调用 static { }
?