我正在查看下面的代码,发现有些奇怪:
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 ?