一个java文件中可包含多个main方法

3-张馨元
3-张馨元   发布于 2018-10-09 19:17
阅读量: 280

一个java文件中可包含多个main方法

java中的main方法是java应用程序的入口,java程序在运行时,首先调用执行main方法。但并不是说java中只能有一个main方法,不同类中都可以包含main方法。但是当JVM进行编译时,只会会选择接口类里面的main方法,作为编译的入口。

一个Java文件至多包含一个公共类

编写一个java源文件时,该源文件又称为编译单元。一个java文件可以包含多个类,但至多包含一个公共类,作为编译时该java文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为【公共类名.java】。

当同一个源文件中包含两个public class时,JVM会立马报出错误

但java文件中可以不包含任何public公共类,但编译时JVM仍将与源文件名相同的类作为默认的接口。即便其他的类提供了main方法,JVM仍然无法编译。

补充:如果包含main函数的类,是默认类,同样可以编译。

 

当且仅当默认为接口的类中包含main方法时才能进行编译。

补充:

上面图片中的class前面没有修饰符,就是默认default的意思(不用把default写出来)。
意思就是只能由跟这个类在同一个包中的类来访问,比private限制更少,但比protected限制更多。

default(包访问权限):

如果类里的一个成员(包括成员变量、方法和构造器等)或者一个外部类不使用任何访问控制符修饰,就称它是包访问权限,default访问控制的成员或外部类可以被相同包下的其他类访问,但是在其他包中不能用import导入。

转载至https://www.cnblogs.com/huiAlex/p/6240764.html

有部分补充,如果有不对的地方,欢迎及时指正。

收藏 转发 评论 5

所以还是要学编译原理的吧

谢谢学长,我百度了一下“jvm的class 字节码执行过程”,没看懂

main函数并不是编译的入口,main函数是执行的入口,当一个java文件内包含多个main函数和多个class 的时候,javac会编译出来和class数目相等的class文件,然后编译出来的代码都是内存无关的,也就是都没有进行内存重定向的代码,jvm载入的寻找main函数标签为Stirng[] args 这个main函数标签的main 来执行,建议去看看jvm的class 字节码执行过程

我记得是个很厉害的程序员,具体是谁不太清楚,还有截图的问题,我下次会注意的。谢谢~

fishtai0

你了解这篇文章封面图片中的人是谁吗?他的身份可能跟这篇文章的内容不太相关:/

ps: 文章中的代码,如果可以请尽量用编辑器中的代码工具插入进来,代码截图可能也不太好。