ArrayList<Point> list = new ArrayList<Point>();
Point pt1 = new Point(3, 4);
list.add(pt1);
Point pt2 = list.get(0);
pt2.x = 23;
if (pt2 == pt1) {
System.out.println("Same object");
} else {
System.out.println("Different object");
}
为什么这个输出是Same object呀,我实在是想不出来,pt2.x不是23么?
pt1和pt2都是Point对象,因此他们都是引用,指向同一块堆内存地址,== 是用于判断两个对象是否是同一个,由于他们内存地址相同,所以是同一个。因此是true。
你打印一下pt1.x看看,你在修改pt2.x的时候,其实把pt1.x也改掉了
pt1和pt2本来都指向同一个对象