摘自《深入理解Java虚拟机》周志明著
Preparation阶段为static变量并设置初始值. 这里要区别变量是不是final.
1. public static final int abc = 123; 实际上对应两步:
a. 编译时即在constant pool里生成123这个字面量
b. 在prepration阶段再赋值为123
2. public static int abc = 123; 也可以分做两步:
a. preparation阶段先把abc赋值为0;
b. 在initialize阶段才赋值为123