class Data {
int val;
}
public class Test {
public static void main(String args[]) {
Data data = new Data();
ArrayList<Data> list = new ArrayList<Data>();
for (int i = 100; i < 103; i++) {
data.val = i;
list.add(data);
}
for (Data d : list) {
System.out.println(d.val);
}
}
}输出三次都是102
分析结果:由于list中存放的是Data类型的对象,而Data中的val会指向一地址。 list中添加的Data类中的val值也会指向这个地址,经过for循环后,val的值由100->101->102,list集合里面元素是可以重复的,由于在for外我们只创建了一个对象, 所以三次存入的都是同一对象,当最后一次val赋值为102时,该对象就指向了102,list里面三次存入的同一对象都会指向同一个地址 |
|