`public static void main args` 是啥意思?
Posted
技术标签:
【中文标题】`public static void main args` 是啥意思?【英文标题】:What does `public static void main args` mean?`public static void main args` 是什么意思? 【发布时间】:2015-05-30 09:04:45 【问题描述】:我不确定这是什么意思,每当你写代码之前,人们都会这样说
public static void main(String[] args)
这是什么意思?
【问题讨论】:
docs.oracle.com/javase/tutorial/getStarted/application/… 【参考方案1】:这里稍微详细解释一下为什么main方法声明为
public static void main(String[] args)
Main 方法是 Java 虚拟机 (JVM) 的 Java 程序的入口点。假设我们有一个名为Sample
的类
class Sample
static void fun()
System.out.println("Hello");
class Test
public static void main(String[] args)
Sample.fun();
这个程序将在编译后作为java Test
执行。 java
命令将启动 JVM 并将我们的 Test.java
类加载到内存中。由于 main 是我们程序的入口点,JVM 会搜索声明为 public
、static
和 void
的 main 方法。
为什么必须将 main 声明为 public?
main()
必须声明为public
,因为我们知道,只要程序执行开始并且 JVM 不属于我们的程序包,它就会被 JVM 调用。
为了访问包外的 main,我们必须将其声明为 public
。如果我们将其声明为 public
以外的任何内容,它会显示 Run time Error
而不是 Compilation time error
。
为什么 main 必须声明为静态的?
main()
必须声明为静态,因为 JVM 不知道如何创建一个类的对象,所以它需要一种标准的方式来访问 main 方法,这可以通过将 main()
声明为 static
来实现。
如果一个方法声明为static
,那么我们可以在类外部调用该方法,而无需使用语法ClassName.methodName();
创建对象。
这样JVM就可以调用我们的main方法为<ClassName>.<Main-Method>
为什么 main 必须声明为 void?
main()
必须声明为 void,因为 JVM 不期望来自 main()
的任何值。所以,必须声明为void
。
如果提供了其他返回类型,则为RunTimeError
,即NoSuchMethodFoundError
。
为什么 main 必须有字符串数组参数?
main(
) 必须将字符串参数作为数组,因为 JVM 通过传递命令行参数调用 main 方法。由于它们存储在字符串数组对象中,因此它作为参数传递给main()
。
【讨论】:
详细解释加1!【参考方案2】:根据Java language specification,Java 程序的执行从main() 方法开始。 main() 方法应该遵循特定的语法,可以解释为:
public static void main(String[] args)
public
- 访问说明符,表明所有其他类都可以访问main()
。
void
- 返回类型,main()
不返回任何内容。
String args[]
- main()
方法的参数,它应该是一个字符串类型的数组。
static
- 访问修饰符。 main 方法应该始终是静态的,因为可以在不创建类实例的情况下调用“main()”方法。
让我们假设,我们正在执行一个 Helloworld java 程序。
在执行程序时,我们使用命令
java Helloworld.
在内部,这个命令被转换成
Helloworld.main()
通过将main()
方法设为静态,JVM 调用main()
方法而不首先创建对象。
【讨论】:
【参考方案3】:在 Java 中,您的主要方法必须始终是:
public static void main(String args[])
程序执行从main()
函数开始,因此是main()
函数。
必须是public
,以便外部环境可以访问。
main()
方法始终是静态的,因为您知道程序执行从main()
方法开始,并且没有包含main()
方法的类的实例被启动。因此,由于静态方法可以在不需要任何实例的情况下运行,因此它被声明为静态的。
Java 是独立于平台的,因此您可以尝试在一个系统上编译 java 文件并尝试在另一个系统上执行类文件。每台机器的位架构可能不同,因此主函数的返回类型必须始终为main()
。
希望这会有所帮助。
【讨论】:
【参考方案4】:Public
= 此方法对所有其他类可见。
static
= 此方法不需要运行实例。
void
= 此方法不返回任何内容。
main()
= Main 方法(第一个运行的方法)。
String[]
= 字符串数组。
args
= 数组名称。
【讨论】:
【参考方案5】:public
--> 访问说明符。任何其他类都可以访问此方法。
static
--> 方法绑定到类,而不是类的实例。
void
--> 返回类型。该方法不返回任何内容。
main(String[] args)
--> 方法名是main()
。它需要一个字符串数组作为参数。 String[]
参数是命令行参数。
注意:上面定义的main()
方法是程序的入口点,如果你改变签名,那么你的程序可能无法运行。
【讨论】:
以上是关于`public static void main args` 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
为什么 main 方法是 public static void ?
关于public static void main(String[] args)方法?
为什么Java的main方法必须是public static void?