Java主函数在哪里可以找到?

3
public static void main(String[] args)是Java提供的内置函数还是用户定义或覆盖某个类的函数?如果它被声明或定义在某个接口或类中,那么它的声明在哪里可以找到?
4个回答

15

JLS 12

Java虚拟机通过调用某个指定类的main方法并传递一个字符串数组作为参数来启动执行。

每个Java应用程序都应该有一个main()方法,JVM在启动应用程序时会查找该方法。这是执行开始的地方。它不是内置的,您需要在类中定义main()方法,该方法成为应用程序的起始执行点。main()方法必须是publicstatic、返回类型为void,并接受一个参数:一个String数组。拥有这样一个main()方法的任何类都可以用作Java应用程序的起点。

JVM规范5.2:

Java虚拟机通过使用引导类装入器(§5.3.1)以一种实现相关的方式创建初始类。然后链接初始类并初始化它,并调用公共类方法void main(String[])。对此方法的调用驱动所有后续执行。执行构成main方法的Java虚拟机指令可能会导致链接(因此创建)额外的类和接口,以及调用其他方法。


“新手”,Java虚拟机会链接初始类,初始化它,并调用公共类方法void main(String[])。这里的初始化是指Java虚拟机为类的静态变量分配内存、运行静态块或其他操作吗?“在调用方法public static void main (String[])之前对类进行初始化”在这里是什么意思?请具体说明。 - Chandan Kumar
1
@ChandanKumar 请更加积极地阅读JLS,同时也要进行谷歌搜索 - AllTooSir

6

这个函数并没有被任何接口定义,语言规范规定它是JRE在开始运行时要寻找的函数。


0

它与您在答案中指定的所有内容无关。当您通过调用java MyClass调用解释器时,您的JVM将尝试在已编译的MyClass代码中查找具有签名public static void main(String[] args)的方法(main方法必须声明为公共的,静态的,并且没有返回值。它必须指定一个形式参数,其声明类型为String数组)。解释从那里开始。它不是用户定义的,而是一种由Java语言规范制定的规范。

更多参考 - 点击此处。


0

public static void main(String[] args){}

每个Java应用程序都必须声明main函数。因为当我们运行一个应用程序时,JVM会寻找main函数。而main函数不是内置的。我们也称main函数为应用程序的起点。

Public:它是一个访问修饰符,定义了谁可以访问这个方法。

Static:它可以在不创建类实例的情况下被访问。

Void:返回类型。

Main:方法的名称。该方法名称由JVM作为应用程序的起点进行搜索。

String args[]:main方法的参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接