public class Test
{
public static void main(String[] args)
{
Point p1 = new Point(0,0);
Point p2 = new Point(0,0);
modify(p1, p2);
System.out.println(p1.getX()+","+p1.getY()+","+p2.getX()+","+p2.getY());
}
private static void modify(Point p1,Point p2){
Point p = p1;
p1 = p2;
p2 = p;
p1.setLocation(5, 5);
p2 = new Point(5, 5);
}
}
class Point{
private int x;
private int y;
public Point(int x,int y){
this.x = x;
this.y = y;
}
public void setLocation(int x,int y){
this.x = x;
this.y = y;
}
public void setX(int x){
this.x = x;
}
public int getX(){
return x;
}
public void setY(int y){
this.y = y;
}
public int getY(){
return y;
}
}
为什么结果是0,0,5,5
能不能具体的说一下,以栈内存和堆内存的角度
结果是(p1[0,0], p2[5,5])就对了, 下图是执行流程以及内存变化
记住: 当对象的引用被执行赋值操作(=)后, 讲不在指向原来的对象(新的对象不是原来的对象)
希望对你有帮助!
所以我认为上述程序中都是引用传递,结果应该为5,5,5,5啊。为什么p1的x,y值没有改变呢