黑马程序员技术交流社区

标题: 为什么类中主函数是静态的? [打印本页]

作者: 安宁.沉睡    时间: 2014-8-14 19:08
标题: 为什么类中主函数是静态的?
本帖最后由 安宁.沉睡 于 2014-8-14 19:14 编辑

刚学了static的应用,就想问下最后老师说类中的主函数是静态的有什么原因吗?
作者: ysdolls    时间: 2014-8-14 19:10
只有静态的才能在没有对象时调用,不是静态的你调用的是谁的方法?
作者: 安宁.沉睡    时间: 2014-8-14 19:16
因为主函数要求在类加载的时候就同时加载,要与类有同样生命期
作者: 安宁.沉睡    时间: 2014-8-14 19:20
ysdolls 发表于 2014-8-14 19:10
只有静态的才能在没有对象时调用,不是静态的你调用的是谁的方法?

额,是啊,好像有主函数的类根本不用声明对象,都是调用别人的对象,由虚拟机直接用类名调用主函数开始程序,谢谢了:)
作者: ysdolls    时间: 2014-8-14 19:31
安宁.沉睡 发表于 2014-8-14 19:20
额,是啊,好像有主函数的类根本不用声明对象,都是调用别人的对象,由虚拟机直接用类名调用主函数开始程 ...

虚拟机加载含有main方法的类的字节码,通过字节码对象调用静态方法。
我是这么理解的。可能不对哈
作者: rolling-stone    时间: 2014-8-14 19:41
因为静态的特点就是类一旦被编译就要在内存中存在,所以任何类的主函数都应该现在内存中存在,这样才可以编译类.
作者: 廿乙木    时间: 2014-8-14 19:54
因为虚拟机默认是调用主函数的,不创建兑现只能静态
作者: 象牙    时间: 2014-8-14 21:32
主函数可以是空,就因为它是静态
作者: 忆梦追风    时间: 2014-8-14 21:51
因为主函数用关键字static修饰了,static就是把函数或者变量修饰成静态的,你把static去了就不是静态的了,静态的函数或者变量在类不创建对象时就可访问,你不静态,在程序开始又没有任何类创建对象,你的程序就没有入口了,或者说起始点,再或者说突破点了,那程序怎么运行?
作者: 心?=忐§忑]    时间: 2014-8-14 21:55
因为主函数是由虚拟机调用的,那么虚拟机调用的时候则不会去创建对象,而是直接调用,所以需要声明为static的。
作者: 亨利大帝    时间: 2014-8-14 22:52
方便虚拟机通过类名调用吧
作者: sunny~    时间: 2014-8-14 22:57
虚拟机一加载程序main函数就加载,提供运行入口
作者: _童金辉    时间: 2014-8-14 23:00
学习了                                    




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2