这个赋值操作如何工作..?

时间:2011-07-06 05:27:36

标签: java collections

我遇到了一些新的东西,我真的很难理解。这就是我所做的,它完美无缺......

    Vector<String[]> v = new Vector<String[]>();
    v.add(s);

    String[][] s1 = new String[v.size][]
    v.toArray(s1);

我的问题是它是如何工作的,即使方法 toArray()只将1-D数组作为参数..?     我对java编程不太老,所以寻求解释..

提前致谢..

4 个答案:

答案 0 :(得分:5)

在Java中只有 真正的一维数组 - 其中看起来就像你有一个多维数组一样,它实际上只是一个数组数组。

因此,如果我们忽略String []本身是一个数组的事实,并在任何地方用StringArray替换它,我们得到这个代码:

Vector<StringArray> v = new Vector<StringArray>();
v.add(s);

StringArray[] s1 = new StringArray[v.size()];
v.toArray(s1);

现在看起来不那么奇怪吧? s1是一个字符串数组数组,v是字符串数组的向量。 v.toArray()将一个字符串数组作为参数,因此我们可以使用s1作为参数。

答案 1 :(得分:1)

很简单:v是一维数组的向量,toArray返回向量中任何元素的一维数组(在本例中为1-D数组)。结果是1-D阵列的1-D阵列,通常称为2-D阵列。

答案 2 :(得分:1)

toArray()接受一维对象数组。

字符串数组是一个对象。

s1是一个字符串数组数组。

QED

答案 3 :(得分:0)

该论点将“String [] []”视为“String []”对象的“1维数组”。

在这种情况下,Vector.toArray(T [] a)采用T的数组。让我们用“String []”类型替换泛型T(注意String []是一个对象)。所以这意味着Vector.toArray(String [] [] a)将String [] []作为参数。