Java数组语法替代方案

时间:2013-12-25 04:20:29

标签: java arrays syntax

我刚看到有人对数组使用这种替代语法,并且想知道:

public void fn(Character[]...){} 

相当于

public void fn(Character[]){} //(i.e. "..." is redundant) 

或等同于

public void fn(Character[][]){}

1 个答案:

答案 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的最后一句话。