传递引用数据类型参数:Java

时间:2016-03-15 06:49:37

标签: java arguments pass-by-reference

参考Oracle(https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html)的Java教程,下面是一个让我完全困惑的部分的副本。有人可以善待我的外行解释吗?

例如,考虑一个移动Circle对象的任意类中的方法:

public void moveCircle(Circle circle, int deltaX, int deltaY) {
    // code to move origin of circle to x+deltaX, y+deltaY
    circle.setX(circle.getX() + deltaX);
    circle.setY(circle.getY() + deltaY);

    // code to assign a new reference to circle
    circle = new Circle(0, 0);
}

让这些参数调用该方法:

moveCircle(myCircle, 23, 56)

在方法内部,circle最初是指myCircle。该方法将圆引用的对象(即myCircle)的x和y坐标分别改变23和56。

方法返回时,这些更改将保持不变。然后为circle赋予对新的Circle对象的引用,其中x = y = 0.但是,这种重新分配没有持久性,因为引用是按值传递的,不能更改。

在该方法中,圆指向的对象已更改,但是,当方法返回时,myCircle仍然引用与调用方法之前相同的Circle对象。

0 个答案:

没有答案