在用java写代码时, 主函数前为什么要加static

stonelover 2008-02-28 11:18:20
在用java写代码时, 主函数前为什么要加static
...全文
3054 102 打赏 收藏 转发到动态 举报
写回复
用AI写文章
102 条回复
切换为时间正序
请发表友善的回复…
发表回复
GUI007 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
因为static方法不需要创建对象 可以直接访问 这样main方法就不需要做特殊处理(愚见)
[/Quote],赞同该说法!
demonhunter112345 2012-07-15
  • 打赏
  • 举报
回复
来学习的
gwdfskjghkdjsdfs 2012-07-15
  • 打赏
  • 举报
回复
其实static没写,编译也不会出错的,但是运行时会出错。这个你懂得。。。。
gwdfskjghkdjsdfs 2012-07-15
  • 打赏
  • 举报
回复
晕,四年眨眼过去了。
guiliangdong 2011-02-14
  • 打赏
  • 举报
回复
飘过...
原来缘来 2011-02-14
  • 打赏
  • 举报
回复
本人用反证法证明一下:假如没有static的话,我们都知道main函数是第一个被执行的函数,但是在此之前不可能生成实例对象(因为没有执行任何代码),没有实例对象的话就不能用 “对象.main()”的方式来调用。因此,只能在main函数前面加上 static 用“类.main()”的方式来调用。
扫地小沙弥 2011-02-14
  • 打赏
  • 举报
回复
涉及到jvm。
安卓机器人 2011-02-12
  • 打赏
  • 举报
回复
Java中的static方法,java虚拟机运行java程序是从main函数开始的,设置static的目的是告诉虚拟机不需要生成类实例就可以直接使用类调用main()方法,void的目的是不要返回参数,至于String[]args是不成文的写法
fondOfJava 2011-01-03
  • 打赏
  • 举报
回复
以前看过一本书, 叫jvm xxx里面有说到。
gnefgnehz 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 66 楼 shangpeijie 的回复:]

引用 64 楼 zuoguodang 的回复:
main方法是程序的切入点,不用任何对象,由jvm去执行这个方法

同意

main()不属于任何一个类(不信你用类名或实例的引用点取试试),它是java提供的应用程序启动点,因为不属于任务一个类,当然要public static.
[/Quote]

我感觉这个才是正解
alawnsheng 2010-10-06
  • 打赏
  • 举报
回复
我认为有两个原因(目前为止发现):第一,static修饰部分的内容存在静态区域内,当类加载的时候,先执行static部分,而main函数一般都是作为程序的入口函数,所以用static修饰时可以保证程序从该主类下的main函数首先执行;第二,如果不加static的话,那在main函数中就不能直接调用静态变量,静态修饰的函数了,而API里面有很多方法是用静态修饰的,所以,不加static修饰,有时候使用那些函数的次数多了就会显得不方便。。。
Setory 2010-10-06
  • 打赏
  • 举报
回复
Static 可标志静态类,与静态方法,也可标志静态域,编译器在载入类时会先载入Static标志的区
雪域迷影 2010-10-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wuxo84 的回复:]
静态,以上来就装入内存

main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样 test t=new test();
然后才能调用 test.main();
而这对于运行一个程序的主函数来说是不现实的,所以比如把main函数定义为stati……
[/Quote]

很不错!
雨雪飘零 2010-10-06
  • 打赏
  • 举报
回复
标记为 static 的方法, 虚拟机不需要创建对象, 就可以调用

main 方法是程序的入口, 尚未进入程序, 不能创建对象, 所以使用 static 正好, 不创建对象就能启动程序!

如果你设计虚拟机, 你也可以叫虚拟机没有进入程序的时候也能创建对象(创建哪个对象,怎么创建对象你自己想办法搞定),但是总得选一种方式, Sun的设计师选择了前者

仅此而已!
zhaolilistudent 2010-10-05
  • 打赏
  • 举报
回复
study
凉岑玉 2010-10-05
  • 打赏
  • 举报
回复
我敢保证·LZ在发帖的时候不会想到这么一个问题会引发这么深邃的思考··所以··我也只能以我个人的浅层次的理解来回答一下楼主··因为加了static关键字··该方法就能直接被访问··能在运行时直接被访问的方法也只能是静态方法··所以··main()函数在程序运行的时候直接被访问··也就是第一个访问··所以可以作为主函数·又称函数的入口··其他的方法如果定义成静态·那也是可以直接在main()方法里直接调用的··静态的意思就是:可以直接被调用··嘿嘿··轻砸··
千杯不醉-sen 2010-10-04
  • 打赏
  • 举报
回复
规程、、、
shuvsbiao 2010-10-04
  • 打赏
  • 举报
回复
学习了
wjwcq 2010-10-04
  • 打赏
  • 举报
回复 1
在main前面加上static表示main方法是静态的方法,那么当执行程序的时候,编译器首先会找到main方法所在的类,然后进行加载,那么什么加载到内存中呢??会把static关键字修饰的变量,方法放在加载进去内存中。同时用static 修饰的变量或方法都是属于某个类的不是某个对象的。也就是说即使没有定义任何对象,那么static修饰的变量或方法都会被加载到内存中,另开辟一片空间供类的所有对象共享!!!!
wugui414 2010-10-04
  • 打赏
  • 举报
回复
不用实例化就可以调用嘛
加载更多回复(82)

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧