我在看下面的代码,发现有些奇怪:
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
带有“ y”的不仅仅属于方法声明{ }
。为什么这样有效?我不知道如何或应该调用此代码。
运行它时x y c g
,它还会产生,为什么static { }
在序列构造函数之前调用get?