我刚看到有人对数组使用这种替代语法,并且想知道:
是
public void fn(Character[]...){}
相当于
public void fn(Character[]){} //(i.e. "..." is redundant)
或等同于
public void fn(Character[][]){}
答案 0 :(得分:3)
使用varargs,您将允许多个参数,仅使用一个2D阵列,您只允许一个参数。它们可能会产生一个2D数组,但它们的调用方式却大相径庭。
小样本:
public class Test {
public static void main(String[] args){
doSomething(new char[5], new char[6]);
doSomething(new char[2][3]);
}
private static void doSomething(char[]... args){
for(char[] s : args){
System.out.println(s.length);
}
}
}
工作得很好:
5
6
3
3
但是,如果你只使用char[][]
,第一种方式就不行了。这就是区别。
char
vs Char
在这种情况下没有任何功能差异,但您可能想要记住this answer的最后一句话。