突然想问:java中规定只能有一个public static void main()函数,这个规定出自哪里?

jxqdxm 2014-12-14 10:02:31
突然想问:java中规定只能有一个public static void main()函数,这个规定出自哪里?
大家学java,开始的时候都会遇到这个问题,就是在源文件中,只能有一个public static void main()函数,并且这个main函数所在的类名必须是文件名,但是这个规定出自哪里?在哪本书上、哪个规范上这么写的?我找了半天竟然找不到出处。
我特别查了java之父写的<java程序设计语言(第4版)>,里面也没有这样的规定的说明。
...全文
2197 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小丶白 2017-01-03
  • 打赏
  • 举报
回复 1
那么问题来了,哪里规定的人每天都要吃饭的呢?
月明星稀灬 2016-12-16
  • 打赏
  • 举报
回复 1
JAVA的底层是C语言, main是C语言的入口函数,算是JAVA从C那里继承了这个好东西。
ipqtjmqj 2016-12-16
  • 打赏
  • 举报
回复
引用 1 楼 jxqdxm 的回复:
public static void main()函数是程序的入口,且类名必须与文件名一致,这是个死规定。这个规定出自哪里?请大神科普一下。
If and only if packages are stored in a file system (§7.2), the host system may choose to enforce the restriction that it is a compile-time error if a type is not found in a file under a name composed of the type name plus an extension (such as .java or .jav) if either of the following is true: The type is referred to by code in other compilation units of the package in which the type is declared. The type is declared public (and therefore is potentially accessible from code in other packages). http://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.6
ryuugu_rena 2016-12-16
  • 打赏
  • 举报
回复
就当固定写法吧,这问题有什么好问的,规定就是这样,人家高兴,不叫main()叫fuck()也可以呀
Rap&篮球 2016-12-15
  • 打赏
  • 举报
回复
c语言是从main方法开始的,可能跟这个有关系吧。
魔之星SHINE 2016-11-13
  • 打赏
  • 举报
回复
引用 9 楼 jxqdxm 的回复:
楼上,你的问题很好回答。public static void main() 函数在一个类中只能有一个,你调用哪个类,就使用哪个类中的这个函数,参数就传给它。这也就是我问的,文件名和类名必须相同的问题,原因也在这里。问题是这个规定出自哪里?在哪个资料中写的有?就是找不到。



jvm只给main传了字符串数组参数,你其他的有卵用?,楼上回错了~
魔之星SHINE 2016-11-13
  • 打赏
  • 举报
回复
引用 8 楼 zhuawa_zzl 的回复:
最近才看java虚拟机规范里有这么一段话 那么如果有多个main那么jvm启动时字符串数组参数传给那个mian呢
jvm只给main传了字符串数组参数,你其他的有卵用?
程序员小冰 2015-11-29
  • 打赏
  • 举报
回复
这个问题很经典
jxqdxm 2014-12-19
  • 打赏
  • 举报
回复
引用 7 楼 cowfishy 的回复:
一看楼主就没学过C....
何出此言?
jxqdxm 2014-12-19
  • 打赏
  • 举报
回复
楼上,你的问题很好回答。public static void main() 函数在一个类中只能有一个,你调用哪个类,就使用哪个类中的这个函数,参数就传给它。这也就是我问的,文件名和类名必须相同的问题,原因也在这里。问题是这个规定出自哪里?在哪个资料中写的有?就是找不到。
zhuawa_zzl 2014-12-19
  • 打赏
  • 举报
回复
最近才看java虚拟机规范里有这么一段话
那么如果有多个main那么jvm启动时字符串数组参数传给那个mian呢
balabala_sean 2014-12-19
  • 打赏
  • 举报
回复
一看楼主就没学过C....
jxqdxm 2014-12-15
  • 打赏
  • 举报
回复
楼上,就是你说的:public class的文件名必须和类名相同,这个规定出自哪里?书上也没有写。
yangyanggoods 2014-12-15
  • 打赏
  • 举报
回复
一个类里只能有一个main函数,这是因为java不允许一个类里有两个名字、参数都相同的函数。但是一个项目中的多个类可以有各自的main函数 并且这个main函数所在的类名必须是文件名<—并无此规定。只不过大家通常都把class声明为public,而public class的文件名必须和类名相同
-江沐风- 2014-12-15
  • 打赏
  • 举报
回复
感谢楼上回答,为什么所有的书上都不明确写上这个规定。这只解决一个。 规定太多,要写的话太麻烦,更重要的是书的侧重点不在这(我感觉) 还有一个,执行程序的入口类名必须是程序名的规定在哪里? 没有这条规定;
日知己所无 2014-12-14
  • 打赏
  • 举报
回复
The Java® Language Specification http://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.1.4 The method main must be declared public, static, and void.
jxqdxm 2014-12-14
  • 打赏
  • 举报
回复
public static void main()函数是程序的入口,且类名必须与文件名一致,这是个死规定。这个规定出自哪里?请大神科普一下。
jxqdxm 2014-12-14
  • 打赏
  • 举报
回复
感谢楼上回答,为什么所有的书上都不明确写上这个规定。这只解决一个。 还有一个,执行程序的入口类名必须是程序名的规定在哪里?

23,405

社区成员

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

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