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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安宁.沉睡 初级黑马   /  2014-8-14 19:08  /  2914 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 安宁.沉睡 于 2014-8-14 19:14 编辑

刚学了static的应用,就想问下最后老师说类中的主函数是静态的有什么原因吗?

12 个回复

倒序浏览
只有静态的才能在没有对象时调用,不是静态的你调用的是谁的方法?
回复 使用道具 举报
因为主函数要求在类加载的时候就同时加载,要与类有同样生命期
回复 使用道具 举报
ysdolls 发表于 2014-8-14 19:10
只有静态的才能在没有对象时调用,不是静态的你调用的是谁的方法?

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

虚拟机加载含有main方法的类的字节码,通过字节码对象调用静态方法。
我是这么理解的。可能不对哈
回复 使用道具 举报
因为静态的特点就是类一旦被编译就要在内存中存在,所以任何类的主函数都应该现在内存中存在,这样才可以编译类.
回复 使用道具 举报
因为虚拟机默认是调用主函数的,不创建兑现只能静态
回复 使用道具 举报
象牙 中级黑马 2014-8-14 21:32:55
8#
主函数可以是空,就因为它是静态
回复 使用道具 举报
因为主函数用关键字static修饰了,static就是把函数或者变量修饰成静态的,你把static去了就不是静态的了,静态的函数或者变量在类不创建对象时就可访问,你不静态,在程序开始又没有任何类创建对象,你的程序就没有入口了,或者说起始点,再或者说突破点了,那程序怎么运行?
回复 使用道具 举报
因为主函数是由虚拟机调用的,那么虚拟机调用的时候则不会去创建对象,而是直接调用,所以需要声明为static的。
回复 使用道具 举报
方便虚拟机通过类名调用吧
回复 使用道具 举报
虚拟机一加载程序main函数就加载,提供运行入口
回复 使用道具 举报
学习了                                    
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马