----
类加载时 , 如果只用到了类中的常量 , 则只进行 " 加载 -> 连接 ( 验证 , 准备 , 解析 ) " 两个过程 :
public class Student {
// 常量..." 连接 " , 没有进行 初始化 , 则不会调用该代码块
System.out.println("Student 静态代码块调用");
}
}
主函数 :
public class...; 在 " 连接 " 的 " 准备 " 阶段 , 该常量值就设置完毕 ; 出于最大限度性能优化的考虑 , 如果不使用该类的其它值 , 就不会执行 " 初始化 " 阶段 ; 因此这里不会调用 静态代码块...中的代码 ;
Constant pool:
#10 = Integer 18
三、数组加载示例
----
对数组进行创建操作 , 如创建了一个对象数组 , 此时不会加载该对象对应的类..., 只会为其在内存分配空间 ;
创建数组时 , 触发的是 Student[] 数组类型的 类加载初始化 , 但是不会触发 Student 类的初始化操作 ;
如果调用数组中的元素时 , 就需要初始化