JAVA代码执行顺序?

请问图片这段代码的执行顺序是什么?对于主类主函数,始终不太明白。我目前的理解:情况1.定义一个主类{主函数{做什么?}}情况2.定义一个主类{主函数{调用这个主类(产生主... 请问图片这段代码的执行顺序是什么?对于主类主函数,始终不太明白。我目前的理解:情况1.定义一个主类{ 主函数{做什么?}}情况2.定义一个主类{ 主函数{调用这个主类(产生主类对象)} public{主类是什么?}}情况一还好理解,但是图片属于情况2,不太明白具体含义了 展开
 我来答
百度网友289c0c0
2018-07-17 · TA获得超过4184个赞
知道大有可为答主
回答量:1531
采纳率:89%
帮助的人:630万
展开全部
先执行B。因为有主方法的话,优先执行主方法体。主方法体要求新建一个ButtonExample的实例,那就去找对应的构造器C,它的实例域包含三个变量,都在C里初始化就能用了。
在这里,ButtonExample就是主类。你不必纠结这些奇怪的术语,知道代码怎么执行就行了。
追问

恩,你说的没错,感谢的你的回答!我在发布完这个问题以后,想到了一个方法解决我的疑问,如图所示。带注释的aaaaaa不能写这个代码,否则会报错,我的理解是:主类的后面只能定义:1、变量,2、指向对象的指针。不能具体执行(例如图中定义了指向对象的指针),所以块a,实际上是在main之前,我这么理解对吧?

追答

好像。。。不太对。不只是主类,所有类的后面都是通常三部分(实例域、构造器、其他方法),实际上块A到底在哪儿是不确定的,因为对象都是堆上分配空间,栈上分配名称(更准确说是引用,不是指针),A也可能包含静态变量,(所有的变量都)可以直接初始化,这部分工作在主方法执行之前(因为一个类可以没有主方法,但是这个类仍然给一些变量分配空间了)。尤其是基本数据类型,全都是运行时自动初始化,然后执行主方法的。你注释的那句话是因为自己调用的语句是需要委托给方法的,就像C语言的printf语句你写在主函数外面,没有委托给函数也是无法执行的。所以执行一个类,你就看主方法就完了。后续学习Awt,Swing,Thread这些东西的时候你会发现程序并不是完全按照你书写代码的顺序执行的,因为编译原理说明了代码优化(外提、规约变量等)在编译期间会执行无数次,堆栈分配的全局和局部display表也被修改无数次,确实也引起一些麻烦。Java 7 及之前,如果你只写:

static
{
    System.out.println("ABC");
}

这部分代码就可以在主方法运行之前执行,甚至就是主方法。还有很多方法能让主方法执行之前执行一些语句,网上有许多参考。

说了一堆废话,就一句重要的:从主方法找入口,剩下的任务就是阅读方法体了,别刻意纠结执行顺序。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式