Java类什么情况下被初始化?

Posted linliquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java类什么情况下被初始化?相关的知识,希望对你有一定的参考价值。

 

1.创建类的实例(new 的方式)。访问某个类或接口的静态变量,或者对该静态变量赋值,调用类的静态方法

2.反射的方式

3.当初始化一个类的时候,如果发现其父类还没有进行初始化,则需先触发其父类的初始化。

4.Java虚拟机启动时被标明为启动类的类,直接使用java.exe命令来运行某个主类(包含main方法的那个类)

5.当使用 JDK 1.7 的动态语言支持时,如果一个 java.lang.invoke.MethodHandle 实例最后的解析结果 REF_getStatic、REF_putStatic、REF_invokeStatic 的方法句柄,并且这个方法句柄所对应的类没有进行过初始化,则需先触发其初始化。

 

Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。这当然就是为了节省内存开销。

 

以上是关于Java类什么情况下被初始化?的主要内容,如果未能解决你的问题,请参考以下文章

java反射:入门使用原理

java中类加载时机

java中类加载时机

Java中Set类初始化问题

java中啥情况下采用工厂类?工厂类的作用是啥?

JVM笔记:Java虚拟机的类加载机制