java类装载分为两种方式:
(1)预先加载
(2)按需加载
由于可对类进行预先加载,所以在程序启动时,不需要将所有的类都加载到JVM中,只有需要时才会加载,即大部分类被延迟到要使用时才加载,这成为java运行时的动态加载机制。
Java基础类是程序运行的基础,采用的是预先加载的方式。
那么按需加载,具体是什么样的条件才会去加载呢?
答:当这个类的静态成员被第一次引用时,就会触发按需加载。这个静态成员包括:静态方法,静态属性,构造方法。
PS1:当访问常量静态常量属性时,JVM加载类的过程不会进行初始化的工作
PS2:尽管构造方法没有显示声明为静态方法,但是仍被作为类的静态成员特例,因此,使用new来构造一个对象时,JVM还是会加载这个类。
例子说明:
代码如图1,运行结果如图2
图1 图2当调用Test1的静态常量属性时,并没有执行Test1的静态域代码,只有在new Test1时,才进行了初始化工作
网友评论