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