所以我要做的是在我的Arraylist BDDvars中添加一个字符串数组。 我似乎面临的问题是,在将'temp'(这是一个字符串数组)添加到BDDvars列表后,当我立即打印时 - 我得到了值。但是,在重新初始化temp之后,我的arraylist中出现的值也会被重置。希望得到一些帮助,为什么会发生这种情况。谢谢!
代码在这里:
List<String[]> BDDvars =new ArrayList<String[]>();
BDDvars.add(temp);
System.out.println(BDDvars.get(0)[0]); // this gives value of temp
for(int n =0;n<11;n++)
temp[n] = "";
System.out.println(BDDvars.get(0)[0]); // this gives empty string - why?
答案 0 :(得分:2)
将temp
添加到BDDvars
时,您没有创建新阵列。相反,BDDvars
中的temp和元素都使用相同的引用。
如果要在不修改BDDvars
中的值的情况下修改temp,请先复制数组:
String[] tempCopy = new String[temp.length];
System.arraycopy( temp, 0, tempCopy, 0, temp.length);
BDDvars.add(tempCopy);
编辑
或使用clone
BDDvars.add(temp.clone());