方法参数的值传递

在 Java 中,方法参数只有值传递,这个值可以是普通类型,也可以是引用类型(地址)。对于普通类型来将,是将形参的值复制给实参,形参不受影响。对于引用类型,是将形参的地址复制给实参,形参可能会收影响。

public class ParamTest1 {

    public static void swap(int x, int y) {
        int temp = x;
        x = y;
        y = temp;
    }

    public static void swap(Param param) {
        int temp = param.x;
        param.x = param.y;
        param.y = temp;
    }

    public static void change(Test test) {
        test.a = 123;
    }
    
    public static void main(String[] args) {
        int a = 1, b = 2;
        swap(a, b);
        System.out.println(a + " " + b); // 1 2
        Param param = new Param();
        swap(param); // 交换成功
        Test test = new Test();
        test.a = 1;
        change(test);
        System.out.println(test.a); // 123
        
        /* ----------------- */
        char[] a = new char[]{'a', 'b', 'c'};
        System.out.println(a); // abc
    }
}

class Test {
    int a = 10;
}