看起来很直观,在 Java 中,实例变量初始化程序是按照它们在类声明中出现的顺序执行的。
在我使用的 JDK 中,这肯定是这种情况。例如,以下内容:
public class Clazz {
int x = 42;
int y = this.z;
int z = this.x;
void print() {
System.out.printf("%d %d %d\n", x, y, z);
}
public static void main(String[] args) {
new Clazz().print();
}
}
打印42 0 42
(换句话说,y
获取 的默认值z
)。
这种订购真的有保证吗?我一直在查看 JLS,但找不到任何明确的确认。