Java class初始化顺序

本文详细解析了Java中类的加载与初始化过程,包括不同情况下初始化的不同阶段,如父类与子类static变量及非static变量的初始化顺序等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看了好多关于java类加载和初始化的文章。
现在根据个人理解总结一下:

初始化顺序:
1 父类static变量,static块。
2 子类static变量,static块。
3 父类变量,初始块。
4 父类构造方法。
5 子类变量,初始块。
6 子类构造方法。
(同一层之间按照代码前后顺序执行。)

通过实验,并不是每次初始化类都会执行以上所有步骤。
1 实例化类(new)得时候全部执行。
(以下其他方法都不执行构造方法。)
2 通过调类static方法的情况只执行前两步。
3 调类得static变量时只执行前两步。
4 调类的static final变量,(赋值计算在运行过程中),会执行前两步。
public static final int IIOF = (int)Math.random();

5 调类得普通static final变量时(赋值计算在编译过程中)不会初始化类。
如:
	public static final String IOF = "test";

or
public static final int CAL = 4 + 4;

6 调用class.forName() 只执行前两步.

我会继续实验以完善以上结论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值