String[]a 和 String...a 之间的区别是什么?

6

在 main 方法中写 String[]a 和 String...a 有何区别?

public static void main(String[]a)

and
public static void main(String...a)

3个回答

8
public static void main(String[] a)

这个函数必须使用一个String[]类型的单一参数或null来调用。

public static void main(String...a)

这个方法可以接受一个类型为String[]的单一参数,或者任意数量的字符串参数,例如main("a","b","c")。然而,如果你传递null,编译器会抱怨,因为它无法确定你是指值为null的String[],还是一个只有一个null字符串的数组。
在main()内部,在任何一种情况下,变量a都是一个String[]。
由于这是main(),你可能不会考虑它将如何被调用...通常它是第一件事。但我已经转换到使用第二种形式来定义所有的main();这样更容易为测试传递参数。

8
第一个函数需要一个参数,这个参数是一个字符串数组。
第二个函数可以接受零个或多个字符串参数,也可以接受一个字符串数组。

3
第二种称为varargs,在Java 5中引入。当您需要向方法传递零个或多个参数时,它可以使您免于显式创建数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接