`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 会搜索声明为 publicstaticvoid 的 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 ?

为什么main方法是public static void?

关于public static void main(String[] args)方法?

为什么Java的main方法必须是public static void?

将 main 方法定义为:public static void main(String[] args)的理由

public static void main(string[] args)解释