import java.util.ArrayList;
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 102 102,三个102.
我的分析是: list.add(data);这句代码因为是给集合添加的对象,但是至始至终都只有一个对象,没有创建新的对象,所以当循环结束后 data.val的值为102,所以集合里面的对象的 val也都为102.正解么!? |