【发布时间】:2014-03-08 22:07:39
【问题描述】:
我找不到这段代码有什么问题。我有一个叫做“数据”的短类型数组。我将 data[i] 值分配给私有 Point 对象变量 x,然后将此对象添加到 ArrayList 并继续下一个 i。在 arraylist 中,所有实例都具有相同的值 - 最后一个被添加。你为什么这么认为?
ArrayList<Point> p = new ArrayList<Point>();
System.out.println("start test");
for (int i=0;i<data.length;i++){
bPunkt.x=(int) data[i];
p.add(bPunkt);
System.out.println(""+bPunkt.x);
}
System.out.println("middle of test");
for (int i=0;i<p.size();i++){
System.out.println(""+p.get(i).x);
}
System.out.println("end test");
这是 system.out 打印的内容:
start test
1
0
1
3
3
5
3
5
5
4
middle of test
4
4
4
4
4
4
4
4
4
4
end test
【问题讨论】:
-
添加前需要给
bPunkt分配一个新实例。