Array List

来源:百度知道 编辑:UC知道 时间:2024/05/08 10:49:54
if(event.getKeyCode()==KeyEvent.VK_F1)
{

S.add(player.PlayerPosition);
for(Point spo:S)
System.out.println(spo);

}
其中S是Point类型的ArrayList对象,PlayerPosition是人物坐标。
当我按下F1时,首先显示的是我的初始坐标(140,140)没有问题。
但当我移动到(140,175)时再按下F1,却显示(140,175)(140,175)我的初始坐标(140,140)没有了,这是为什么。

s中每次都添加player.PlayerPosition,而player.PlayerPosition只有一个,所以for每次循环中取出来的都是同样的player.PlayerPosition的值。可以通过类似s.add(new Position(player.PlayerPosition.X,player.PlayerPosition.Y))的代码来达到你想要的效果。

在JAVA中是按值传递,也就是这个值就是地址,这样的话 只能改变对象的值不能改变对象的引用