我有一个ArrayList里面放置了多个MyClass对象
public ArrayList getArrayList(
MyClass obj;
for (int i=0;i<alist.size();i++){
obj=(MyClass)alist.get(i);
obj.changeName("lisi");
obj.changeAge(18);
}
return alist;
}
测试结果----
我通过obj=(MyClass)alist.get(i);获取到MyClass对象,并改变其属性值,
结果ArrayList里面保存的MyClass的值也对应地被改变了我有点不大明白为什么会随之被改变 ??? 难道是for循环内的obj获得了ArrayList内各个MyClass对象
的引用,for内的MyClass与ArrayList内的MyClass均在同一个内存地址处 ???
望指正!!!
public ArrayList getArrayList(
MyClass obj;
for (int i=0;i<alist.size();i++){
obj=(MyClass)alist.get(i);
obj.changeName("lisi");
obj.changeAge(18);
}
return alist;
}
测试结果----
我通过obj=(MyClass)alist.get(i);获取到MyClass对象,并改变其属性值,
结果ArrayList里面保存的MyClass的值也对应地被改变了我有点不大明白为什么会随之被改变 ??? 难道是for循环内的obj获得了ArrayList内各个MyClass对象
的引用,for内的MyClass与ArrayList内的MyClass均在同一个内存地址处 ???
望指正!!!
String s = "123";
List<String> list = new ArrayList<String>();
list.add(s);
list.add(s);
s = "321";
list.add(s);
for(String s : list) {
System.our.print(s + "\t");
}
执行完后,你会发现结果是
321 321 321
而不是
123 123 321