比如我们定义了public static int value=111 ,那么 value 变量在预备阶段的初始值就是 0 而不是 111(初始化阶段才会赋值)。由于这时尚未开始执行任何Java方法,而把value赋值为123的putstatic指令是程序被编译后,存放于类构造器()方法之中,以是把value赋值为123的动作要到类的初始化阶段才会被执行。
特别情况:如果类字段的字段属性表中存在ConstantValue属性,那在预备阶段变量值就会被初始化为ConstantValue属性所指定的初始值。
比如给 value 变量加上了 final 关键字public static final int value=111 ,那么预备阶段 value 的值就被赋值为 111。