public static main的变体(String args [])

时间:2011-11-28 01:09:59

标签: java main

这4个方法签名有什么区别,为什么第4个不起作用?

public void main(String args[]) {... } 
public void main(String[] args) {... }
public void main(String... args) {... }
public void main(String[] args[]) {... }

2 个答案:

答案 0 :(得分:5)

前三个是等价的。 * 最后一个相当于String[][] args(即一个数组数组),它与Java main所需的不匹配

然而,惯用版是第二个。

<小时/> *第三个仅从Java 5开始有效。

答案 1 :(得分:1)

String args[]String[] args完全相同。第一种形式是数组声明的“C”形式,[]应用于变量名称。第二种形式是首选的Java表单,其中[](更逻辑地)与类型名称而不是变量名称相关联。 Java允许两种形式互换。

第三种形式似乎是一个可变长度的参数列表形式,但我从未钻研过那个区域。

第四种形式是令人厌恶的,只能偷偷穿过规格的裂缝,永远不应该被使用。我的猜测是它指定了一个二维数组,但是如果不尝试它就无法确定。

请注意,public static main没有任何神圣之处。您可以命名任何方法main并从任何地方调用它。只是当您从命令行运行Java程序时,JAVA命令会查找该名称(使用通常的参数布局)作为入口点。直到那时main被视为与任何其他方法一样。