【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 中只有值传递,引用传递实质上也是值传递,因为它传的是地址,类似于指针。