【Java SE】十一、值传递和引用传递

你知道 Java 到底有没有指针嘛?😥

值传递:在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;

引用传递:在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数

public class Test {
    public int var = 10; // 实例变量
    public static void main(String[] args) {
        int a = 10;
        int[] b = {10, 0};
        Test c = new Test();
        System.out.println("传递前:" + a);
        System.out.println("传递前:" + b[0]);
        System.out.println("传递前:" + c.var);
        modify(a); modify(b); modify(c); // 传递参数
        System.out.print("—————————");
        System.out.println("传递后:" + a);
        System.out.println("传递后:" + b[0]);
        System.out.println("传递后:" + c.var);
    }
 
    public static void modify(int x) {
        x = 20; // 修改基本数据类型
    }
    // 以下修改引用数据类型
    public static void modify(int[] x) { // 方法重载一
        x[0] = 20; // 修改数组元素
    }
    public static void modify(Test x) { // 方法重载二
        x.var = 20; // 修改实例变量
    }
}

运行结果如下:

传递前:10
传递前:10
传递前:10
—————————
传递后:10
传递后:20
传递后:20

注意:Java 中只有值传递,引用传递实质上也是值传递,因为它传的是地址,类似于指针。