在下面的代码中,我想交换两个对象,但交换两个对象的对象引用变量的第一个方法(swap1)不起作用,而另一个方法(swap2)交换了两个对象的值对象'数据字段x.radius& y.radius正常工作,那么第一种方法的问题是什么? 为什么当我交换两个对象的两个引用变量时,它们并没有相互引用?
public class Main {
public static void main(String [] args) {
TestCircle circle1 = new TestCircle(1);
TestCircle circle2 = new TestCircle(2);
swap2(circle1,circle2);
System.out.println("After swap2: circle1 = " +
circle1.radius + " circle2 = " + circle2.radius);
}
// false swap
public static void swap1(TestCircle x, TestCircle y){
TestCircle temp = x;
x = y;
y = temp;
}
// real swap
public static void swap2(TestCircle x, TestCircle y){
double temp = x.radius;
x.radius = y.radius;
y.radius = temp;
}
}
class TestCircle {
double radius;
TestCircle(double newRadius){
radius = newRadius;
}
}