每当在类中声明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程序员,如果有人告诉我为什么需要将该参数输入主方法,我会非常感激。
答案 0 :(得分:7)
因为这是执行Java类时调用的main方法的签名。需要有一些约定将执行哪种方法。按惯例,它是
public static void main(String[] args) method
是的,你确实生活在摇滚之下,在使用命令行参数时有很多情况。为什么不使用它们?
你可以问:为什么需要它?为什么不选择任何其他主要方法?答案是,它会增加复杂性和0的好处。现在,主要功能看起来与众不同。如果你看一下,你知道它会被调用。如果要调用任何main,你必须总是问自己:主要是我正在查看要调用的那个,还是这个类中有另一个主要优先?
答案 1 :(得分:2)
简短回答:因为这就是Java的方式。
命令行参数一直在使用,但由于启动程序脚本,或者因为程序在服务器上运行等,您并不总是看到它们。
也就是说,很多时候命令行参数属于-D
种类,在到达main
之前由JVM捣乱。但这取决于你在做什么。
答案 2 :(得分:2)
由于
快乐的编码......
*是的,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的函数。您的程序未使用该参数说明定义主函数,因此此查找失败并显示一条错误消息。