https://javaguide.cn/java/basis/why-there-only-value-passing-in-java.html
开始之前,我们先来搞懂下面这两个概念:
方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为:
String hello = "Hello!";
// hello 为实参
sayHello(hello);
// str 为形参
void sayHello(String str) {
System.out.println(str);
}
程序设计语言将实参传递给方法(或函数)的方式分为两种:
很多程序设计语言(比如 C++、 Pascal )提供了两种参数传递的方式,不过,在 Java 中只有值传递。
为什么说 Java 只有值传递呢? 不需要太多废话,我通过 3 个例子来给大家证明。
代码:
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}