JP刹不住车 2019-10-10 17:20 采纳率: 33.3%
浏览 1554

Java中向方法传递对象参数

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;
    }
}
  • 写回答

5条回答 默认 最新

  • 垠迹信息科技 上海垠迹信息科技有限公司官方账号 2019-10-10 17:26
    关注

    swap1只是改变了一个内存的指向,实际内存并没有变。

    评论

报告相同问题?