//被插入ArrayList中的类 public class Iserc { private String name; private String fav; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getFav() { return fav; } public void setFav(String fav) { this.fav = fav; } } //工做类 import java.util.ArrayList; public class Practice { public static void main(String[] arg){ ArrayList aLists = new ArrayList(); Iserc is1=new Iserc(); is1.setName("n1"); is1.setFav("f1"); aLists.add(is1); is1.setName("n2"); //只是从新赋值,没有从新生成对象 is1.setFav("f2"); aLists.add(is1); for (int i = 0; i < aLists.size(); i++) { Iserc is = (Iserc)aLists.get(i); System.out.println(is.getName() + is.getFav()); } aLists.clear(); Iserc is2=new Iserc(); is2.setName("n3"); is2.setFav("f3"); aLists.add(is2); is2 = new Iserc();//装入ArrayList以前从新生成了对象 is2.setName("n4"); is2.setFav("f4"); aLists.add(is2); for (int i = 0; i < aLists.size(); i++) { Iserc is = (Iserc)aLists.get(i); System.out.println(is.getName() + is.getFav()); } } }
程序结果:java
n2f2
n2f2
n3f3
n4f4this
结论:若是ArrayList装入以前不New出类的对象,则add进去的全部的对象都是最后一次add进去的对象的值。code
本质上ArrayList.add进去的其实是引用对象的地址,而不是对象自己。对象