在运行 Java 代码时,很多时候需要弄清楚程序执行的流程,而面向对象的 Java 程序并非像主要为面向过程而设计的 C 语言一样去顺序执行(简单按照代码的顺序),这使得对于类文件的加载以及执行流程的理解非常重要。本文简单介绍了 Java 类的初始化部分具体过程,包括成员变量、静态代码块、构造函数等的初始化时机及执行流程。 初始化时机 根据 javase 8 的文档说明[1],一个类(本文暂不考虑接口)T 将在下列情况第一次出现前立即被初始化: T 的一个实例被创建[2]; T 的一个静态方法被调用; T 声明的一个静态变量被赋值; T 声明的一个静态变量被使用并且这个变量不是常量[3]; 暂不考虑这种情况(涉及到顶层类,断言,内部类等)… Read More