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

静态初始化块之后的其他初始化块运行顺序

计算机在执行程序代码块时,应该按照从上到下的顺序依次执行,为什么会率先执行静态初始化块,之后继续向上执行其他的初始化块?而不是在执行完静态初始化块之后,按照从上到下的顺序,执行其他初始化块

正在回答

2 回答

因为静态成员优先于对象存在

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

我已经知道静态代码块会优先执行,我的关键问题是在例子中,总共声明了三个代码块,分别为,num1,num2,num3,在执行完num3这个静态代码块之后,执行的是num2,按照我的理解应该执行num1,num1和num2都是普通代码块,不是应该按照从上到下的顺序执行吗?逆着来就不是很明白了,现在的话,我认为,我只需要知道程序会优先执行静态代码块就足够了,其他的代码块的执行顺序并没有关系,该声明声明,该赋值的赋值,我只是比较奇怪运行顺序的改变

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

老实得很

num1不是普通代码块,而是构造方法,执行的优先级应该为静态代码块>普通代码块>构造方法
2016-04-07 回复 有任何疑惑可以回复我~
#2

守住心中的那份宁静 提问者 回复 老实得很

事实上,我在把上面的代码全部运行之后,尽管num1输出内容为“通过构造方法为变量num1赋值”,num2输出内容为“通过初始化块为变量num2赋值”,但是实际上在num1和num2并没有区别,均为普通代码块,并且我在将num1和num2的顺序进行调换后,输出的信息也进行了调换
2016-04-07 回复 有任何疑惑可以回复我~
#3

守住心中的那份宁静 提问者 回复 老实得很

已经明白了是我的基础知识不够牢固,的确是静态代码块>实例化代码块>构造方法
2016-04-07 回复 有任何疑惑可以回复我~
#4

老实得很 回复 守住心中的那份宁静 提问者

请采纳答案,谢谢
2016-04-08 回复 有任何疑惑可以回复我~
#5

守住心中的那份宁静 提问者 回复 老实得很

如何采纳你的回答呢?在你之前已经有人回答过了,但是他的回答并没有给我解决疑问,“采纳答案”不在你的答案这里,咋弄?
2016-04-08 回复 有任何疑惑可以回复我~
#6

慕粉3677886 回复 守住心中的那份宁静 提问者

为什么是这样的顺序
2017-03-23 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530694    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

静态初始化块之后的其他初始化块运行顺序

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