for (int i=100; i<103; i++) {
data.setVal(i);
list.add(data);
}
//程序执行到这里,相当于已经创建了一个拥有100,101,102三个元素的集合,接下来要想输出的结果为100,101,102,就应该取该集合中的元素,但你的程序接下来做的事并不是取该集合中的元素,而是用一个 while 循环,想通过 调用tmp.getVal()) 输出100,101.102
分析:当上面的for循环结束后,最后一次内存中val的值被修改为102。当j=0时,list(0)+tmp.getVal()); 开始调用getval()方法,你的 getVal方法是这样写的 int getVal() { return val; }与100根本对不上, 因为val的作用域是整个Data类, 内存中只会记住最后一个val值为102 ,当然输出的也就为102了;i=1和2时,亦如此,故最终程序输出的结果为102,102,102
int j = 0;
while (j < list.size()) {
Data tmp = (Data )list.get(j);
System.out.println("list(" + j + ") = " + tmp.getVal());
j++;
}
}
要想输出结果为100,101,102,则应该对getVal() 方法进行重写,使 getVal() 方法中实现取list集合中的元素的功能
|