加载 -> 连接 ( 验证 , 准备 , 解析 ) 阶段 , 就可以完成常量池的初始化 , 即使没有执行 初始化 这个步骤 , 也不影响使用类中的常量值 ;
在 连接 的 准备 阶段 , 为 普通 的...静态变量 进行 默认赋值 , 但是针对 静态常量 , 直接进行 指定赋值 ;
但是 普通的 静态变量 的 指定赋值 , 是在 初始化 阶段 完成的 ;
类 在 " 初始化 " 阶段 , 调用 静态代码块...;
二、常量加载示例
----
类加载时 , 如果只用到了类中的常量 , 则只进行 " 加载 -> 连接 ( 验证 , 准备 , 解析 ) " 两个过程 :
public class Student...静态代码块 没有被执行 , 说明 类加载 的流程中 , " 初始化 " 步骤 , 没有被执行 ;
找到 Student.class 字节码文件 , 然后使用
javap -v -Student.class...; 出于最大限度性能优化的考虑 , 如果不使用该类的其它值 , 就不会执行 " 初始化 " 阶段 ; 因此这里不会调用 静态代码块 中的代码 ;
Constant pool:
#10 = Integer