0

每当你在一个类中声明主方法时,你总是必须做一个String名为“args”的数组。重点是什么?除非我生活在一块岩石之下,否则 Java 中的命令行工具几乎不再使用。当我尝试运行它时...

//this program won't compile
public class SomeClass {
    public static void main(){
        System.out.println("This text will never be displayed :(");
    }
}

输出以红色文本显示:

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

如果有人告诉我为什么需要将该参数输入到 main 方法中,我,新手 Java 程序员,将不胜感激。

4

7 回答 7

7

因为这是执行 Java 类时调用的 main 方法的签名。需要有一些约定将执行哪个方法。按照惯例,它是

public static void main(String[] args) method

是的,你确实生活在岩石之下,有很多情况下使用命令行参数。为什么不使用它们?

你可能会问:为什么需要它?为什么不选择任何其他主要方法?答案是它会以 0 的好处增加复杂性。就像现在一样,主要功能看起来很独特。如果您查看它,您就会知道它将被调用。如果要调用任何 main,您必须始终问自己:我正在查看的 main 是要调用的那个,还是这个类中有另一个 main 优先?

于 2011-11-12T04:46:42.087 回答
2

简短的回答:因为这就是 Java 的方式。

命令行参数一直在使用,但由于启动器脚本或程序在服务器上运行等原因,您并不总是看到它们。

也就是说,很多时候命令行参数是-D多种多样的,在到达main. 但这取决于你在做什么。

于 2011-11-12T04:50:52.753 回答
2

因为

  1. 甚至许多UI程序仍然使用命令行参数(您知道Microsoft Outlook 支持一些非常方便的命令行参数吗?)*;和:
  2. 这就是 Java 的工作原理 (TM)。除其他外,它降低了代码的复杂性(通过禁止多种形式和可能的意外阴影)和运行时(不需要找出要调用的“哪个 main”)。允许没有“args”的辅助形式只是增加了太少。

快乐的编码...


*是的,Outlook 不是 Java。但是,如果 Outlook 有命令行参数,那么它们肯定还是有价值的——这是夸张的 ;-)

几乎每个处理打开读取文件的 UI 程序都允许通过命令行参数(Gimp、Notepad、Firefox 等等)指定要打开哪个文件。除其他外,这是为了允许与 Windows 资源管理器和类似项目中的“双击打开”集成。

于 2011-11-12T04:51:17.200 回答
2

Java 应用程序可以从命令行接受任意数量的参数。这允许用户在启动应用程序时指定配置信息。(来自Command-Line Arguments)正如其他人在这里所说的那样,就是这样!

看在上帝的份上,请不要说我不需要这个,没有人需要这个!:)

于 2011-11-12T04:59:04.917 回答
0

我能想到的一种情况是,当您想要为您的软件提供一个命令行驱动的界面以及 GUI 时。一个例子是 Android 工具,它们都有控制台驱动的界面。

于 2011-11-12T04:47:21.297 回答
0

我实际上不知道为什么需要它,除了说它是一种语法约定。与 Lisp/Scheme 中的函数是 (defined function-name()) 或 Ruby 中的 do..end 块相同,Java Main 函数的语法是使用 String[] args。

至于不使用命令行参数,完全取决于程序。完全。我一直在用 java 编写带有命令行参数的程序;这只是你想要完成什么的问题。

于 2011-11-12T04:47:01.217 回答
0

命令行参数支持在编程语言中很大程度上是标准的。即使在这个 GUI 时代,也有各种隐藏的方式来运行带有命令行参数的程序。我知道 Windows 为高级用户提供了快捷方式配置,例如,您可以在其中运行具有给定命令行参数集的程序。

Java 还强制执行类型,并通过扩展函数签名(如果您不知道这些是什么,请在 Google 上查找)。主函数应采用字符串数组 - 如果您定义的主函数与该参数签名(1 个参数,字符串数组)不匹配,则会导致不兼容。

Java 支持函数重载(您可以使用不同的参数多次定义相同的函数名)。为了找到要调用的函数,Java 采用输入参数类型并查找采用匹配参数的适用的已定义函数。

当程序运行时,Java 专门寻找一个名为 main 的函数,它有 1 个参数(String [])。您的程序没有使用该参数规范定义主函数,因此此查找失败并显示错误消息。

于 2018-08-08T19:49:50.747 回答