之间是否存在差异:
public void main(String args[]) { ... }
和
public void main(String[] args) { ... }
我不相信,但我很想知道。
答案 0 :(得分:36)
从语义上讲,它们是相同的。但是,我建议在声明数组时使用后一种语法(String[] args
)。前一种语法主要是为了与C语法兼容。
由于String[]
作为一个整体,是Java中对象的类型,因此更加一致和清晰,不会将其拆分。
similar question解决方法参数列表后的[]
。
答案 1 :(得分:5)
没有区别,但将括号放在类型(String[]
)之后是Java中更常见的做法。
答案 2 :(得分:4)
否
他们只是两种写作风格
答案 3 :(得分:4)
两者完全相同。请参阅Java语言规范(JLS)以查看java中使用的语法。
String [] args或String args []将创建一个没有大小和名称args的数组(在内存中保留一个位置)。
Let us Consider:
String [] x;
putting the [] after the name. Why? because it avoids subtle problems like this:-
String x [] , y; //x[] is an array but y is a String
String [] x y ; //two arrays x[] and y[] both
答案 4 :(得分:1)
方法签名是相同的,所以没有区别。
它是一个公共方法,它什么都不返回,方法名称是“main”,它需要一个String数组。
答案 5 :(得分:0)
不。与这两者没有区别。
请参阅this doc中的Declaring a Variable to Refer to an Array
部分。从该文件
float anArrayOfFloats []; //这个表格 不鼓励
所以只需使用第二种风格。
答案 6 :(得分:0)
这些之间的区别在于,当我们尝试使用静态语法手动将main方法从一个类调用到另一个类时,我们使用“string [] s”。此时我们必须在main方法中传递一个字符串类型数组作为参数。当我们使用“String ... s”时,不需要传递任何字符串数组作为参数。它会运行,如果你将数组作为参数传递也没关系(如果你没有明确地传递它,它会自己传递)...... 因此证明了/////////
答案 7 :(得分:0)
有区别: 例如 如果你写int [] arr; - 这里arr是对整数数组的引用 而在int arr []的情况下; - arr是一个原始的int类型数组
答案 8 :(得分:0)
虽然两者都用于创建String类型的数组,但第二个更受欢迎,因为这样可以同时创建多个String数组... E.g String[] a,b;
在这里,您同时创建了两个String Arrays a和b。
然而
String a[],b;
将创建字符串数组" a"和String变量(不是数组)b 。
希望这澄清。
答案 9 :(得分:0)
除了这两种风格之外,值得一提的是,以下也是自 Java 5 以来 main()
方法的有效签名:
public static void main(String... args)
来自Java Language specification:
<块引用>main 方法必须声明为 public、static 和 void。它必须指定一个形式参数(第 8.4.1 节),其声明类型为字符串数组。
省略号 ...
是 var-args 的语法,可用于将任意数量的参数传递给方法。更多相关信息here。
答案 10 :(得分:0)
String args[] 和 String[] args 是相同的。从某种意义上说,他们做同样的事情,创建一个名为 args 的字符串数组。
但为了避免混淆并强制与您可能遇到的所有其他 Java 代码兼容,我建议在声明数组时使用语法 (String[] args)。
您可能会遇到的一个困惑是,当您尝试在一行中声明多个 String 数组时, String[] fruits, vegetables
将与 String fruits[], vegetables
不同
前者创建了两个字符串数组fruits和vegetables,而后者创建了一个fruits的String数组和一个的字符串变量>蔬菜