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