Java类的初始化顺序

对于静态变量、静态初始化块、变量、初始化块、构造器的初始化顺序

我们现在来试验下,其代码如下:

输出结果是:

静态变量
静态初始化块
变量
初始化块
构造器

为了验证是否这个输出结果和他们的排列顺有关,现在把它们的顺序改变下,

其输出的结果和上面的一下,现在我们就可以证明了

它们的初始化顺序是(静态变量、静态初始化块)>(变量、初始化块)>构造器。

括号中的顺序是按照他们的排列顺序而定的。

 

如果这里出现继承?

他们的初始化的顺序又是怎样的?

请看以下代码:

运行一下上面的代码,输出的结果:
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器

我们可以看到并不是父类完全初始化完毕后才进行子类的初始化,实际上子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成了。我们得出的结果就是。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值