这4个方法签名有什么区别,为什么第4个不起作用?
public void main(String args[]) {... }
public void main(String[] args) {... }
public void main(String... args) {... }
public void main(String[] args[]) {... }
答案 0 :(得分:5)
前三个是等价的。 * 最后一个相当于String[][] args
(即一个数组数组),它与Java main
所需的不匹配
然而,惯用版是第二个。
<小时/> *第三个仅从Java 5开始有效。
答案 1 :(得分:1)
String args[]
和String[] args
完全相同。第一种形式是数组声明的“C”形式,[]
应用于变量名称。第二种形式是首选的Java表单,其中[]
(更逻辑地)与类型名称而不是变量名称相关联。 Java允许两种形式互换。
第三种形式似乎是一个可变长度的参数列表形式,但我从未钻研过那个区域。
第四种形式是令人厌恶的,只能偷偷穿过规格的裂缝,永远不应该被使用。我的猜测是它指定了一个二维数组,但是如果不尝试它就无法确定。
请注意,public static main
没有任何神圣之处。您可以命名任何方法main
并从任何地方调用它。只是当您从命令行运行Java程序时,JAVA命令会查找该名称(使用通常的参数布局)作为入口点。直到那时main
被视为与任何其他方法一样。