1.在两个swap函数中,swap1对实例进行交换操作,而swap2对实例数据域进行交换操作,令我感到疑惑的是为什么swap1交换后输出的数据域没有发生交换?
代码如下:
public class ObjectAndClass {
public static void main(String[] args) {
Circle circle1 = new Circle(1);
Circle circle2 = new Circle(2);
System.out.println("circle1 = " +
circle1.radius + " circle2 = " + circle2.radius);
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;
}
}