今天,想和大家聊聊关于java中的参数传递的原理,参数的传递有两种,值传递和引用传递。
值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
基本类型传递
先来看看下面这段最基本的代码:
@Test
public void test() {
int n = 10;
test01(n);
System.out.println("最终结果n==" + n);
}
private void test01(int m) {
System.out.println("修改之前m==" + m);
m = 20;
System.out.println("修改之后m==" + m);
}
复制代码
输出结果:
修改之前m==10
修改之后m==20
最终结果n==10
复制代码
如果跟你预期的不同,那我想你还是没有理解参数的值传递与引用传递的原理。
结合生活中的场景,深入理解一下值传递和引用传递:
你有一把钥匙,当你的朋友想要去你家的时候,如果你直接把你的钥匙给他了,这就是引用传递。这种情况下,如果他对这把钥匙做了什么事情,比如他在钥匙上刻下了自己名字,那么这把钥匙还给你的时候,你自己的钥匙上也会多出他刻的名字。
你有一把钥匙,当你的朋友想要去你家的时候,你复刻了一把新钥匙给他,自己的还在自己手里,这就是值传递。这种情况下,他对这把钥匙做什么都不会影响你手里的这把钥匙。
下面我们来画图更好的理解上述代码的例子: