Java中的String [] args有什么意义?

时间:2011-11-12 04:44:15

标签: java parameters command-line-arguments main convention

每当在类中声明main方法时,总是必须执行一个名为“args”的String数组。重点是什么?除非我生活在摇滚之下,Java中的命令行语言几乎不再使用。当我试着跑这个......

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

输出以红色文字显示:

  

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

我,新手Java程序员,如果有人告诉我为什么需要将该参数输入主方法,我会非常感激。

7 个答案:

答案 0 :(得分:7)

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

public static void main(String[] args) method

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

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

答案 1 :(得分:2)

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

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

也就是说,很多时候命令行参数属于-D种类,在到达main之前由JVM捣乱。但这取决于你在做什么。

答案 2 :(得分:2)

由于

  1. 仍然使用命令行参数 ,即使是许多 UI程序(你知道Microsoft Outlook supports some very handy command-line arguments?)*;和:
  2. 这就是Java如何工作(TM)。除此之外,它还降低了代码(通过禁止多个表单和可能的意外阴影)和运行时(通过不需要找出“调用哪个主要”)的复杂性。允许没有“args”的辅助表单只会增加太多。
  3. 快乐的编码......


    *是的,Outlook不是Java。但是,如果Outlook有命令行参数,那么它们仍然值得一试 - 这是夸张的; - )

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

答案 3 :(得分:2)

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

为了上帝的缘故,请不要说如果我不需要这个,没有人需要这个! :)

答案 4 :(得分:0)

我实际上不知道为什么它是必需的,除了说这是一个语法约定。与Lisp / Scheme中的函数(定义的函数名())相同,或者Ruby中有do..end块,Java Main函数的语法是String [] args。

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

答案 5 :(得分:0)

我可以想到的一个案例是,当您想要为您的软件和GUI提供命令行驱动的界面时。一个例子是Android工具,它们都有控制台驱动的接口。

答案 6 :(得分:0)

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

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

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

程序运行时,Java专门查找带有1个参数(字符串[])的名为main的函数。您的程序未使用该参数说明定义主函数,因此此查找失败并显示一条错误消息。