【注解和反射】什么时候类会和不会被初始化?

继上一篇博客【注释和反射】类加载的过程-CSDN博客

 

目录

四、什么时候类会被初始化(主动引用)?

测试

五、什么情况下不会发生类的初始化(被动引用)?

测试


四、什么时候类会被初始化(主动引用)?

在Java中,类的初始化是类加载过程的一部分,具体地说,它发生在类加载的“初始化”阶段。但是,类的初始化并不会在类被加载到JVM时立即发生,而是在以下情况之一发生时才会被触发:

  1. 创建类的实例:当使用new关键字创建类的新实例时,如果该类还没有被初始化,则会触发类的初始化。

  2. 访问某个静态变量:当类中的静态变量被访问时(除非该静态变量是常量,即被final修饰的基本类型或字符串常量),如果该类尚未初始化,则会触发初始化。需要注意的是,只有真正读取静态变量的值才会触发初始化,而仅仅声明静态变量不会触发初始化。

  3. 调用类的静态方法:当调用类的静态方法时,如果该类还没有被初始化,则会先进行初始化。

  4. 反射:当使用Java反射API(如Class.forName()方法)显式加载类时,会触发类的初始化。这是框架和库常用的技术,用于动态加载和初始化类。

  5. 初始化子类:当初始化一个类时,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。

  6. Java虚拟机启动时:当Java虚拟机启动时,会先初始化包含main方法的那个类。

    </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值