Show the output of the following program:
public class Test {
public static void main(String[] args) {
Circle circle1 = new Circle(1);
Circle circle2 = new Circle(2);
swap1(circle1, circle2);
System.out.println("After swap1: circle1 = " +
circle1.radius + " circle2 = " + circle2.radius);
swap2(circle1, circle2);
System.out.println("After swap2: circle1 = " +
circle1.radius + " circle2 = " + circle2.radius);
}
public static void swap1(Circle x, Circle y) {
Circle temp = x;
x = y;
y = temp;
}
public static void swap2(Circle x, Circle y) {
double temp = x.radius;
x.radius = y.radius;
y.radius = temp;
}
}
class Circle {
double radius;
Circle(double newRadius) {
radius = newRadius;
}
}
为什么swap1不能达到交换的目的呢
------解决方案--------------------------------------------------------
swap1中x,y只是引用,交换的只是引用的值,而x,y指向的值并为发生变化!
------解决方案--------------------------------------------------------
方法参数是 传值不是传引用
------解决方案--------------------------------------------------------
方法参数传递的是对象引用的copy?
------解决方案--------------------------------------------------------
java 中的函数调用参数是传值调用。
------解决方案--------------------------------------------------------
传值改成传引用
------解决方案--------------------------------------------------------
swap1中把x,y交换了,但没换circle1,circle2
------解决方案--------------------------------------------------------
值传递 为什么会变啊