准备
准备阶段是正式为类中定义的变量(即静态变量)分配内存并设置变量初始值的阶段。
这里的初始值“通常情况”下是数据的零值。
public static int value = 123;
变量value
在准备阶段过后的初始值为0而不是123,把value
赋值为123的动作要到类的初始化阶段才会被执行。
public static final int value = 123;
编译时Javac
将会为value
生成ConstantValue
属性。
如果类字段的字段属性表中存在ConstantValue
属性,那在准备阶段变量值就会被初始化为ConstantValue
属性
所指定的初始值。