main(String args[]) 和 main(String[] args) 之间有区别吗?
Posted
技术标签:
【中文标题】main(String args[]) 和 main(String[] args) 之间有区别吗?【英文标题】:Is there a difference between main(String args[]) and main(String[] args)? 【发布时间】:2011-08-25 05:31:46 【问题描述】:有没有区别:
public void main(String args[]) ...
和
public void main(String[] args) ...
我不相信,但我想知道。
【问题讨论】:
如你所说,编码风格。我知道很多人更喜欢第二种,因为args
是String
的数组而不是args
的数组
【参考方案1】:
在语义上,它们是相同的。但是,我建议在声明数组时使用后一种语法 (String[] args
)。前一种语法主要是为了与 C 语法兼容。
由于String[]
在Java中作为一个整体是对象的类型,所以不拆开会更加一致清晰。
similar question 在方法参数列表之后寻址 []
。
【讨论】:
【参考方案2】:没有区别,但是在类型 (String[]
) 后面加上括号是 Java 中更常见的做法。
【讨论】:
【参考方案3】:两者完全一样。请参阅 Java 语言规范 (JLS) 以查看 java 中使用的语法。
String[] args
或 String args[]
将创建一个没有大小和名称的数组(在内存中保留一个位置)args
。
让我们考虑一下:
String [] x;
在名称后面加上[]
可以避免这样的微妙问题:-
String x [] , y; //x[] is an array but y is a String
String [] x y ; //two arrays x[] and y[] both
【讨论】:
【参考方案4】:虽然两者都用于创建 String 类型的数组,但第二个更流行,因为这样,您可以同时创建多个 String 数组...例如String[] a,b;
在这里,您同时创建了两个字符串数组 a 和 b。
然而
String a[],b;
将创建字符串数组“a”和字符串变量(不是数组)b。
希望这可以澄清。
【讨论】:
【参考方案5】:否
它们只是两种写作风格
【讨论】:
【参考方案6】:方法签名相同,所以没有区别。
它是一个公共方法,它什么都不返回,方法名称是“main”,它需要一个字符串数组。
【讨论】:
【参考方案7】:不。两者没有区别。
参见this doc 中的Declaring a Variable to Refer to an Array
部分。从那个文档
float anArrayOfFloats[]; // 这个表格 不鼓励
所以只需使用第二种样式。
【讨论】:
【参考方案8】:它们之间的区别在于,当我们尝试使用静态语法从一个类手动调用主方法到另一个类时,我们使用“string[] s”。此时,我们必须在 main 方法中传递一个字符串类型的数组作为参数。当我们使用 "String... s" 时,不需要传递任何字符串数组作为参数。它会运行,不管你是否将数组作为参数传递(如果你没有显式传递它,它会自行传递)...... 因此证明了/////////
【讨论】:
【参考方案9】:除了这两种样式,值得一提的是,以下也是Java 5以来main()
方法的有效签名:
public static void main(String... args)
来自Java Language specification:
方法 main 必须声明为 public、static 和 void。它必须指定一个声明类型为字符串数组的形式参数(第 8.4.1 节)。
省略号 ...
是 var-args 的语法,可用于将任意数量的参数传递给方法。更多信息here。
【讨论】:
【参考方案10】:String args[] 和 String[] args 是相同的。从某种意义上说,他们做同样的事情,创建一个名为 args 的字符串数组。
但为了避免混淆并强制与您可能遇到的所有其他 Java 代码兼容,我建议在声明数组时使用语法 (String[] args)。
您可能遇到的一个困惑是,当您尝试在一行中声明多个 String 数组时, String[] fruits, vegetables
将与 String fruits[], vegetables
不同
前者创建了两个字符串数组fruits和vegetables,而后者创建了一个fruits的String数组和一个蔬菜
【讨论】:
【参考方案11】:有一个区别: 例如 如果你写 int[] arr; - 这里 arr 是对整数数组的引用 而在 int arr[] 的情况下; - arr 是一个原始的 int 类型数组
【讨论】:
以上是关于main(String args[]) 和 main(String[] args) 之间有区别吗?的主要内容,如果未能解决你的问题,请参考以下文章
public static void main(String[] args) 和 public static void main(String args[]) 的区别? [复制]
public static void main(String[] args)说明
在哪些情况下我们可以使用 public static void main(String... args) 而不是 public static void main(String[] args)