我对以下代码的不同有疑问:
Vector v = new Vector(); String [] str_arr = new String[3]; for(int i=0; i<3; i++) { str_arr[0] = "A"; str_arr[1] = "B"; str_arr[2] = "C"; v.add(str_arr); } System.out.println(v.size()); //answer 3
与
Vector v = new Vector(); for(int i=0; i<3; i++) { String [] str_arr = new String[3]; str_arr[0] = "A"; str_arr[1] = "B"; str_arr[2] = "C"; v.add(str_arr); } System.out.println(v.size()); //answer 3
两个代码之间的唯一区别是,对于第二个代码,字符串数组是在循环内创建的.
两个代码都产生相同的结果,但我想知道这两个代码之间的区别.
这两个片段不会产生相同的结果.第一个片段将相同的数组对象添加3次到Vector.第二个片段向Vector添加了三个不同的数组对象.
结果可能看起来相同,因为第二个代码段中的所有三个数组都包含相同的值.
如果您要更改作业
str_arr[0] = "A"; str_arr[1] = "B"; str_arr[2] = "C";
至
str_arr[0] = "A" + i; str_arr[1] = "B" + i; str_arr[2] = "C" + i;
您会看到在第一个片段中,Vector中的所有数组都包含[A2,B2,C2]
,因为只有一个数组被覆盖.
在另一方面,第二个片段会产生一个包含三个不同阵列的Vector - ,[A0,B0,C0]
,.[A1,B1,C1]
[A2,B2,C2]