一、java中每个类都需要有main方法吗?

每个类可以有也可以没有main方法,

甚至所有类里可以都没有main方法。如果你想从某个类做为入口开始运行整个程序。那么就把他设成 public ,之后再里面写个main方法作为入口。

每个项目都要有一个主类,这个主类中必须得有main,用于程序的入口.在程序测试时,一般每个类中都有一个main,用于方便测试人员对类成员进行测试

不是,可有可无。但是你要执行的类中必须有,因为main函数是提供程序执行的进入口。比如你 java Test 那麼Test类中必须有个main函数。也可拿来做测试某个类用。如你要测试一下Test类内的方法(这时的Test类可能不是主类,假设这时此类只提供给主类一些功能),那麼你可以在Test类中加入一个main方法,调用Test类中的成员变量和方法,查看结果,达到测试的效果。

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JufYzJib-1640105308869)(https://raw.githubusercontent.com/xkyvvv/blogpic2/main/img/image-20211222001147510.png)]

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

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

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

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

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

image-20211222001304072

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

补充:

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

default(包访问权限):

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

三、java中main为什么在类名中?

为什么要声明一个main方法?我知道main方法是类的起点。但是为什么我们只应该把它声明为public static void main(String args[])?

为什么我们不能宣布它为public static void test(String args[])?main是关键字吗?JVM如何知道它将是起点?

应用程序必须从某个地方开始,是吗?从《时代的黎明》(1972?)EDCOX1的0个字已经走了,为什么要用Java来改变它呢?

@当然,这个问题的措辞不清楚,我会修改的。问题似乎在于为什么该方法被命名为main,而不是为什么它需要是静态的。

这不是关键字。“JVM如何知道这是起点?”>通过读取其名称"main"

@chrylis the op询问为什么名字main,这似乎在我上面提到的问题中得到了回答。

@桑巴,对不起,第二个答案漏了。

§The JVM has to know some where the starting point of your program is.The way the designers chose to mark that is to call the entry method EDOCX1 original 0,because the same name is used for that purpose in C(which most programmers were familiar with the time)and it makes sense.他们对自己的名字没有特殊的魔法,他们只是有选择,而且这是一个实际的选择。§

§When a program begins,it has to begin from some where…好吧,这是EDOCX1的音标0§§为什么停?§

§当JVM呼吁主要的方法,有非目标的存在对于阶级的呼唤。So it has to have static method to allow this from class.§

§Why Public?§

The main method is called by the JVM to run the method which is outside the scope of project.

§Why Void?§

Think about it,once the main method finishes,it doesn’t mean that the program finished.如果空间是一个新的威胁,它可能是这些威胁仍然在运行。

据我所知,问题是关于main的名字,而不是签名的其余部分。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐