【问题标题】:Difference of args vs arg in main-method, java? [duplicate]java中主要方法中args与arg的区别? [复制]
【发布时间】:2020-12-09 20:16:27
【问题描述】:

为什么

" public static void main(String[] arg) { "

工作而不是

"public static void main(String[] args) {" ?

和String-Array有关系吗?

它究竟是如何工作的? 使用“arg”而不是“args”可能会更有效吗?

【问题讨论】:

  • “为什么 X 工作而不是 Y”是什么意思? “Y”不适合你吗?
  • 为什么“arg”比“args”更“高效”?如果有的话,它的效率会降低,因为现在的名称表明它只是一个参数,不再是参数数组s,这会妨碍可读性,降低程序员的效率。
  • 您可以随意命名您的方法参数 - Java 根本不在乎。您只需确保您的入口点是publicstaticvoid,称为main,并采用String[] 类型的一个参数。话虽如此,只要您仍然实现它,您就可以随意更改它。例如static public void main(String... foo) 仍然有效。

标签: java args main-method


【解决方案1】:

除了参数名称的正常差异之外,绝对没有区别(例如,您必须在方法体中使用正确的名称)。 main 方法的参数名称完全符合约定。完全可以这样写:

public static void main(String[] dontUseJavaUtilDate)

作为入口点的声明。

来自使用TestJLS 12.1.4

最后,在类Test的初始化完成后(在此期间可能发生了其他相应的加载、链接和初始化),调用Test的main方法。

方法 main 必须声明为 public、static 和 void。它必须指定一个声明类型为String 数组的形式参数(第 8.4.1 节)。

没有指定参数名称。

JVM specification section 5.2 的同上:

Java 虚拟机通过使用引导类加载器(第 5.3.1 节)创建一个初始类来启动,该类以依赖于实现的方式指定。 Java 虚拟机然后链接初始类,对其进行初始化,并调用公共类方法 void main(String[])。调用此方法会驱动所有进一步的执行。执行构成主要方法的 Java 虚拟机指令可能会导致链接(并因此创建)其他类和接口,以及调用其他方法。

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 2018-08-04
    • 2015-09-06
    • 1970-01-01
    • 2018-01-07
    • 2014-04-03
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多