刚开始学Java的时候一度以为:基本数据类型是值传递,引用类型是引用传递。新人很容易在这两个概念上面被搞糊涂,后来看了Hollis的文章才明白了Java中只有值传递。
接下来我能用简单明了的方式来说明这一问题,希望能对刚学习Java的朋友有点帮助。
1.概念
值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递:在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
值传递的概念没啥说的,修改复制文件不会影响到源文件,最容易产生歧义的就在这个引用传递上。理解上面两句话的关键在于两句话的前半段中是否有复制。
可以理解为有复制的就是值传递,无论复制的是值还是地址值。接下来我们依次探讨Java中传递基本类型和应用类型的过程。
2.传递基本数据类型
代码:
public static void main(String[] args) { int i = 2; add(i); System.out.println("i = "+i); } public static void add(int x){ x += 1; System.out.println("x = "+x); }