为了账号安全,请及时绑定邮箱和手机立即绑定

为什么非静态初始化块是按从后往前的顺序进行的?

我知道先执行静态初始化块,所以先输出age,但在执行非静态初始化块时,为什么按照的是从后往前的顺序,先输出的sex,然后name,而不是先name再sex?

正在回答

5 回答

因为构造方法是最后执行的。所以顺序是那样子

0 回复 有任何疑惑可以回复我~

类中创建静态初始化块的时候就会先执行,然后创建类的对象的时候会先执行初始化块,然后运行方法程序,所以先显示静态初始化块,再显示初始化块,再显示方法程序

0 回复 有任何疑惑可以回复我~

程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。

0 回复 有任何疑惑可以回复我~

这个应该和代码执行优先级有关,构造函数和代码块的优先级:
静态代码块 > main函数代码块 > 构造代码块 > 构造函数

详细的在这:https://blog.csdn.net/hxmlx1314/article/details/29209453

0 回复 有任何疑惑可以回复我~
#1

耀莹你好

静态代码块 > main方法代码块 > 构造代码块 > 构造方法
2018-12-09 回复 有任何疑惑可以回复我~

先非静态初始化块,后构造函数;相当于把非静态初始块移到构造函数开始处

1 回复 有任何疑惑可以回复我~
#1

雪月蓝影 提问者

我的问题重点在执行非静态初始化块时顺序为什么是从后往前
2018-09-12 回复 有任何疑惑可以回复我~
#2

洛辰m 回复 雪月蓝影 提问者

并不是啊。第一个是构造方法,第二个是非静态化块,第三个才是静态化块。
2018-09-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么非静态初始化块是按从后往前的顺序进行的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信