我们为什么要声明main
方法?我知道main
方法是课程的起点。但为什么我们只应将其声明为public static void main(String args[])
?
为什么我们不能将其声明为public static void test(String args[])
?
main
是关键词吗? JVM将如何知道它将成为起点?
答案 0 :(得分:6)
JVM必须知道程序的起点在哪里。设计者选择标记的方式是调用入口方法main
,因为在C中使用相同的名称(大多数程序员当时都熟悉)并且它是有意义的。没有什么特别神奇的名字,他们只需选择一些东西,这是一个实际的选择。
答案 1 :(得分:3)
当一个程序开始时,它必须从某个地方开始..好吧,这是main
方法。
为什么是静电?
当JVM调用main方法时,正在调用的类中存在 no object 。所以它必须有静态方法才允许来自类。
为何公开?
为什么无效?
答案 2 :(得分:1)
你班上可以有很多方法,可以是公共的和静态的。 JVM如何确定哪个方法是启动程序。为了避免歧义,Java语言决定了JVM执行方法的特定标准。该标准规定“自执行类应具有以下签名的方法:
public static void main(String[] arg) { }
以下是此标准如何帮助JVM
公共:它允许JVM访问和执行您的类的方法 static:该方法只能通过类名执行(不需要创建对象) void:什么都不返回(JVM期望你的方法没有) main:为了使您的类可自行执行,JVM查找此方法名称,并且程序的生命周期从此方法的第一个语句到此方法的最后一个语句有效。一旦执行了此方法的最后一个语句,您的程序就会终止,JVM的实例就会终止。此名称标准还可帮助JVM查找特定入口点。如果JVM允许任何名称,那么它将是多个入口点,JVM会感到困惑。所以他们决定了一个入口点并将其称为主要入口点。
答案 3 :(得分:1)
我们为什么要申报主要方法?我知道主要方法是课程的起点。但为什么我们只应声明为
public static void main(String args[])
?
基本上,因为它是如何定义的。 (他们决定使用“main”而不是其他名称的原因是“main”是用于C或C ++程序入口点的名称。)
为什么我们不能声明为public static void test(String args [])?
因为那时JVM无法找到入口点。假设,入口点方法可以是任何东西。现在考虑这个例子:
public class Test {
public static void foo(String[] args) { ... }
public static void bar(String[] args) { ... }
}
...和这个命令行......
$ java Test
调用哪种方法? foo
方法? bar
方法?
这是关键词吗?
没有。它只是一个众所周知的方法名称。就核心Java语言而言,main
方法只是一种具有特定签名的方法。实际上,您可以在具有不同签名的同一个类中使用其他 main
方法。
JVM将如何知道它将成为起点?
因为指定了,JVM使用main
方法作为起点。
为什么main应该存在于Java类中?
嗯......你不必在每个类中都有main
方法......或者实际上任何类......如果你有其他方法来启动使用不同约定的JVM入口点。但是,如果您希望应用程序可以运行,则至少需要一个具有合适main
方法的类。
答案 4 :(得分:0)
It is static
- 编译器无需创建输入方法的对象
void
- java与平台无关。因此,如果它返回某些东西,它可能因平台而异
public
- 访问
main()是必需的,以便编译器可以进入您的应用程序。顾名思义,它是首先应该执行的主要方法。
答案 5 :(得分:0)
JVM遵循规范并以开发人员的形式与JLS共享该规范。 JVM在其具体说明中提到以下形式的main方法是任何独立Java应用程序的起点:
public static void main(String args[])
来自规格:
因此,作为开发人员,我们应该遵守JVM规范,以便JVM能够理解我们要做的事情。
如果我的答案不具有描述性或可理解性,请遵循以下规范:
Java虚拟机通过调用main方法开始执行 一些指定的类,传递一个参数,这是一个 字符串数组
了解更多:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html
答案 6 :(得分:0)
您可以在没有main方法的情况下编译任何Java类,但如果没有 main()方法,则无法运行独立应用程序。
主要方法是定义为在应用程序启动时调用的方法。没有它,就没有地方可以开始运行了。