, 解析 ) -> 初始化 这个完整的流程 ;
如 : 如果是 public final static 修饰的常量值 , 在编译阶段 , 就会将该值放到常量池中 ; 在类加载的过程中 , 只要执行到...加载 -> 连接 ( 验证 , 准备 , 解析 ) 阶段 , 就可以完成常量池的初始化 , 即使没有执行 初始化 这个步骤 , 也不影响使用类中的常量值 ;
在 连接 的 准备 阶段 , 为 普通 的...静态变量 进行 默认赋值 , 但是针对 静态常量 , 直接进行 指定赋值 ;
但是 普通的 静态变量 的 指定赋值 , 是在 初始化 阶段 完成的 ;
类 在 " 初始化 " 阶段 , 调用 静态代码块...查看该字节码文件的附加信息 ;
在 " 常量表 " 中 , 发现了常量值
18
, 这个常量值是在编译阶段就编译到了字节码中 ; 在 " 连接 " 的 " 准备 " 阶段 , 该常量值就设置完毕...[] 数组类型的 类加载初始化 , 但是不会触发 Student 类的初始化操作 ;
如果调用数组中的元素时 , 就需要初始化 Student 类 ;
Student 类 :
public class