这4个方法签名之间的区别是什么,为什么第4个不起作用?
public void main(String args[]) {... }
public void main(String[] args) {... }
public void main(String... args) {... }
public void main(String[] args[]) {... }
前三个是等价的。*最后一个相当于String[][] args
(即数组的数组),这与Java对main
的要求不匹配。
然而,习惯的版本是第二个。
String args[]
和String[] args
完全等价。第一种形式是数组声明的"C"形式,将[]
应用于变量名。第二种形式是首选的Java形式,其中[]
(更合乎逻辑地)与类型名而不是变量名相关联。Java允许这两种形式互换。
第三种形式似乎是可变长度的参数列表形式,尽管我从未深入研究过这个领域。
第四种形态是一种令人憎恶的东西,只能从规范的缝隙中偷偷溜出来,永远不应该使用。我的猜测是它指定了一个二维数组,但是没有尝试就不能确定。
请注意,public static main
没有什么神圣的。您可以将任何方法命名为main
,并从任何地方调用它。只是当您从命令行运行Java程序时,Java命令会查找该名称的内容(使用通常的参数布局)作为入口点。在此之前,main
和其他方法一样。