Java中的String args有什么意义?

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

 //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程序员,如果有人告诉我为什么需要将该参数输入main方法,我将非常感激。

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

 public static void main(String[] args) method 

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

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

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

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

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

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

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

因为

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

快乐的编码……


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

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

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

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

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

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

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

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

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