package main;
public class Main {
double radius;
public Main(double newRadius) {
radius = newRadius;
}
public static void main (String [] args) {
Main x = new Main(1);
Main y = new Main(2);
Main temp;
// try to swap first time
temp = x;
x = y;
y = temp;
System.out.println(x.radius + " " + y.radius);
x = new Main(1);
y = new Main(2);
// try to swap second time
swap(x, y);
System.out.println(x.radius + " " + y.radius);
}
public static void swap(Main x, Main y) {
Main temp = x;
x = y;
y = temp;
}
}
为什么第一次工作,但是第二次却没有?第一个没有进行交换,但是第二个没有进行交换。我将引用传递给函数。为什么这不起作用?
答案 0 :(得分:0)
您误以为引用是如何传递的,您创建了一个范围,在该范围内引用被交换,然后该范围终止。
尝试将字段的值存储在变量中,例如temp = x.radius,然后分配给y.radius。
它第一次起作用的原因是范围相同。