list.add所有元素都變成最後一個加入的元素
阿新 • • 發佈:2018-12-05
public static void main(String[] args) { List<Test> list = new ArrayList<>(); Test t = new Test(); for(int i=0;i<10;i++){ t.setNum(i); list.add(t); } System.out.println(list.toString()); }
因為list新增的是物件的引用,Test只被new了一次然後不斷被賦值
輸出
[TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9], TestBean [num=9]]
public static void main(String[] args) { List<Test> list = new ArrayList<>(); for(int i=0;i<10;i++){ Test t = new Test(); t.setNum(i); list.add(t); } System.out.println(list.toString()); }
輸出
[TestBean [num=0], TestBean [num=1], TestBean [num=2], TestBean [num=3], TestBean [num=4], TestBean [num=5], TestBean [num=6], TestBean [num=7], TestBean [num=8], TestBean [num=9]]
public class Test { private Integer num; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } @Override public String toString() { return "Test [num=" + num + "]"; } }