原因是你这个里面只有一个Data对象,你每次给他在for循环里面赋值的时候,都在改变Data对象的属性val的值,所以,最后输出了102。你要是想输出不同的值,那么list里面add的应该是不同的Data对象。即把你的Data data = new Data()写在第一个for循环里面,这样每次list里面add的都是不同的Data对象。就和最快回答那哥们写的是一样的
因为data是一个对象 向list中存入的是data在内存中的路径 你在这里修改的都是同一个对象.也就是说你的list集合里面存的路径全部是一样地,修改的值也是同一个data对象.所以当你循环的时候 输出的也就是相同的值了!
要想输出的值不同 可以在循环里面获取data对象
public class Test {
public static void main(String args[]) {
ArrayList list = new ArrayList();
for (int i = 100; i < 103; i++) {
Data data = new Data();
data.val = i;
list.add(data);
}
for (Data d : list) {
System.out.println(d.val);
}
}
}
在这里面你的list里面add的是data...所以一直都是一个值