//被插入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進去的其實是引用對象的地址,而不是對象自己。對象