String...
和 String[]
在Java中都用来表示字符串数组,但它们在使用上有一些区别:
-
String[]
: 明确表示一个字符串数组。它可以在方法参数中使用,也可以用于局部变量、成员变量等场景。当你需要定义一个字符串数组时,你会使用String[]
。 -
String...
: 是一种特殊的方法参数,称为可变参数(varargs)。它允许你在调用方法时传入任意数量的字符串参数,而不是预先定义的数组。编译器在内部将这些参数转换为一个数组。可变参数必须是方法签名中的最后一个参数。
互相转换
-
从
String[]
到String...
: 由于在内部String...
参数实际上被当作String[]
处理,所以在方法调用时,你可以直接传递一个String[]
给一个接受String...
的参数。这里不需要显示的转换。 -
从
String...
到String[]
: 在方法内部,String...
参数就是一个String[]
数组。因此,如果你有一个方法参数是String...
,而你需要一个String[]
数组,实际上你已经有了,不需要任何转换。
示例
使用String[]
:
public void printStrings(String[] strings) {
for (String str : strings) {
System.out.println(str);
}
}
// 调用
String[] array = {"Hello", "World"};
printStrings(array);
使用String...
:
public void printStrings(String... strings) {
for (String str : strings) {
System.out.println(str);
}
}
// 调用
printStrings("Hello", "World"); // 直接传递字符串
// 或者
String[] array = {"Hello", "World"};
printStrings(array); // 传递字符串数组
在使用String...
时,你可以传递一个字符串数组,也可以传递零个或多个字符串参数。这提供了额外的灵活性,尤其是在不确定参数数量的情况下。