当前位置:  开发笔记 > 编程语言 > 正文

在循环内创建的Java String数组

如何解决《在循环内创建的JavaString数组》经验,为你挑选了1个好方法。

我对以下代码的不同有疑问:

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

两个代码之间的唯一区别是,对于第二个代码,字符串数组是在循环内创建的.

两个代码都产生相同的结果,但我想知道这两个代码之间的区别.



1> Eran..:

这两个片段不会产生相同的结果.第一个片段将相同的数组对象添加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]

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有