for循环中list add对象,最后发现是同一个。
错误代码:
public static void main(String[] args) {
int [] arrs={1,2,3,4};
String string=null;
ArrayList<String> strings = new ArrayList<>();
for (int i: arrs) {
string=new String();
string="值为:"+i;
strings.add(string);
}
for (String s:strings){
System.out.println(s);
}
}
是因为list add的是对象的引用。
实际只创建了一个对象,所以add的都是这个对象。
解决方案
对象定义可以在外面,new 对象在for循环里面,这样每次都是一个新对象。
正确代码:
public static void main(String[] args) {
int [] arrs={1,2,3,4};
String string=null;
ArrayList<String> strings = new ArrayList<>();
for (int i: arrs) {
string=new String(); // 这一句其实没有必要,只是为了说明要new对象
string="值为:"+i;
strings.add(string);
}
for (String s:strings){
System.out.println(s);
}
}