下面这段代码,执行后的输出结果是 10。网上大多解释为,JVM在加载 ClassInitTest 类的链接阶段的准备环节,就给静态成员 number 分配了默认值 0。那么我的问题在于,此时类尚未初始化,number 成员是怎么创建的?过程是“JVM 加载 ClassInitTest 类,在准备环节发现类的private、int类型静态成员,完成创建” 吗?
public class ClassInitTest {
static {
number = 20;
}
private static int number = 10;
public static void main(String[] args) {
System.out.println(number);
}
}