课程
/后端开发
/Java
/Java入门第二季 升级版
我知道先执行静态初始化块,所以先输出age,但在执行非静态初始化块时,为什么按照的是从后往前的顺序,先输出的sex,然后name,而不是先name再sex?
2018-09-12
源自:Java入门第二季 升级版 8-10
正在回答
因为构造方法是最后执行的。所以顺序是那样子
类中创建静态初始化块的时候就会先执行,然后创建类的对象的时候会先执行初始化块,然后运行方法程序,所以先显示静态初始化块,再显示初始化块,再显示方法程序
程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。
这个应该和代码执行优先级有关,构造函数和代码块的优先级:静态代码块 > main函数代码块 > 构造代码块 > 构造函数
详细的在这:https://blog.csdn.net/hxmlx1314/article/details/29209453
耀莹你好
先非静态初始化块,后构造函数;相当于把非静态初始块移到构造函数开始处
雪月蓝影 提问者
洛辰m 回复 雪月蓝影 提问者
举报
课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙
2 回答静态初始化块之后的其他初始化块运行顺序
4 回答在静态初始化块中创建同类的一个对象后,静态初始化块、普通块、构造方法是按什么顺序执行的?
3 回答为什么只执行了静态初始化代码块?没有执行非静态初始化代码块?
2 回答静态初始化块
4 回答静态初始化块