【问题标题】:Is the String args[] parameter needed for programs that do not require command line arguments?不需要命令行参数的程序是否需要 String args[] 参数?
【发布时间】:2015-10-07 15:50:07
【问题描述】:

据我所知,String args[] 接受 String 类型的元素数组 - 运行时系统通过该机制将信息传递给应用程序。

如果我们采用这样一个简单的加法程序:

class Add {

    public static void main(String args[]) {
        int x = 10;
        int y = 30;
        int c = x + y;
        System.out.println(c);
    }
}

很明显,程序不需要任何命令行参数来计算结果。没有值传递给 args 数组。那么,是否有必要包含这个数组,还是 main() 语法要求我们不这样做?

【问题讨论】:

  • 你不会在 c# 中。我会说尝试一下...
  • “合理”是指“必要”吗?
  • 主函数必须有那个签名。
  • 如前所述,您无法更改方法签名,但您可以忽略args[] 的内容(或缺少这些内容),假设您不需要使用它们。

标签: java command-line main


【解决方案1】:

您必须拥有一个名为 public static void main(String[] args) 的函数作为 Java 程序的入口点。

如果您查看实际 java command 的文档,它会明确说明:

java 命令启动 Java 应用程序。它通过启动 Java 运行时环境 (JRE)、加载指定的类并调用该类的 main() 方法来完成此操作。该方法必须声明为 public 和 static,它不能 返回任何值,并且它必须接受一个字符串数组作为参数。方法声明的形式如下:

public static void main(String[] args)

这和JavaFX程序是有区别的; its initial entry point 位于start() 函数中。

【讨论】:

  • 为了记录,如果你尝试使用varargs feature,写public static void main(String... args),你会发现这也有效。
【解决方案2】:

来自The Java Tutorials:

在 Java 编程语言中,每个应用程序都必须包含一个 main 方法,其签名是:

public static void main(String[] args)

【讨论】:

    【解决方案3】:

    是的 - 如果你忽略参数,你会得到以下错误:

    错误:在 nl.magnus.test.Test 类中找不到主方法,请将主方法定义为: public static void main(String[] args)

    main 的此要求由 Oracle 在 Java SE specifications 中指定:

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

    方法 main 必须声明为 public、static 和 void。它必须指定一个声明类型为字符串数组的形式参数(第 8.4.1 节)。因此,可以接受以下任一声明:

    public static void main(String[] args)

    public static void main(String...args)

    【讨论】:

      【解决方案4】:

      简短的回答 - 是的。你的main 方法必须有一个String[] 参数,即使它不使用它。

      如果它没有这样的参数,Java 只是将其视为任何其他 public static 方法,而不是程序的入口点。

      【讨论】:

        【解决方案5】:

        这是Java中程序入口点的必需定义。你必须拥有它。

        【讨论】:

          【解决方案6】:

          无论你是否从命令行发送运行时参数,它都是main() 方法的语法。

          任何程序的执行都只会以main()这个签名开始:-

          public static void main(String args[])
          

          【讨论】:

            猜你喜欢
            • 2021-02-26
            • 1970-01-01
            • 1970-01-01
            • 2021-07-03
            • 2022-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-24
            相关资源
            最近更新 更多