【发布时间】:2021-12-30 23:00:25
【问题描述】:
我在看下面的代码,发现有些奇怪:
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 { } 在序列构造函数之前被调用?
【问题讨论】:
标签: java initializer