我有一个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均在同一个内存地址处 ???
望指正!!!

解决方案 »

  1.   

    虽然在list里面但是还是操作的同一个对象
      

  2.   

    你debug看啊,不行就看那些方法的代码,看到低是改了值了吗?
      

  3.   

    JAVA的引用……你可以这样试试
    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
      

  4.   

    最好把list里面的格式设置统一