A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 善毅 中级黑马   /  2016-3-8 23:30  /  5092 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
main方法为什么能被jvm直接调用?而不用创建对象来调用啊?

最佳答案

查看完整内容

jvm先装载类,再链接类,再初始化类(以代码的文本顺序执行类变量初始化器、类静态初始化方法或接口的属性(field)初始化器),完成类的初始化后,才执行类的main方法。在链接过程中,可以静态链接(解析),也可以动态链接(解析),下面的图例说明的是动态链接。

13 个回复

倒序浏览
旅人 来自手机 中级黑马 2016-3-8 23:30:47
沙发
jvm先装载类,再链接类,再初始化类(以代码的文本顺序执行类变量初始化器、类静态初始化方法或接口的属性(field)初始化器),完成类的初始化后,才执行类的main方法。在链接过程中,可以静态链接(解析),也可以动态链接(解析),下面的图例说明的是动态链接。
回复 使用道具 举报
是因为有static关键字修饰的缘故
回复 使用道具 举报
因为有static关键字修饰的缘故
回复 使用道具 举报
main 在java中为一个修饰符,并非关键字.在程序开发中被定义为一种程序可识别的入口,这样JVM就会容易去识别;  是一种人为的约定俗成,即为一种规定,大家都去遵守而已!
回复 使用道具 举报
善毅 来自手机 中级黑马 2016-3-9 12:30:12
地板
问题解决了谢谢大家
回复 使用道具 举报
jvm是先装载类,再链接类,再初始化类,完成类的初始化后,才执行类的main方法,不需要创建对象来调用的
回复 使用道具 举报
LZBJVJY 发表于 2016-3-8 23:55
main 在java中为一个修饰符,并非关键字.在程序开发中被定义为一种程序可识别的入口,这样JVM就会容易去识别; ...

嗯嗯,非常感谢
回复 使用道具 举报
main方法是static,加载类之后就可以用此方法了。而且jvm记录了main方法,所以会默认运行此方法。{:2_34:}
回复 使用道具 举报
膜拜一下~~~~~~~~~·
回复 使用道具 举报
jvm执行一段程序(除去加载类之类的操作),真正执行总要有一个入口的,或者说通过操作系统进入程序都会有main函数,
应该是实现由协定什么的
回复 使用道具 举报
暴风城管 来自手机 中级黑马 2016-3-12 23:46:45
12#
Main就是个门牌号,当jvm看到了,他就知道他到家了,只有这个门牌号是对的
回复 使用道具 举报
我也想过这个问题,但是好像是因为main方法里面有static,可以直接调用,创建对象那是用来调用别的类中的方法
回复 使用道具 举报
要真正弄清楚这个原理,估计要先了解JVM等底层的东西了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马