重要的事情说三遍!
对于Java的传递类型,是很多初学者,甚至很多高级程序员都有的困惑。
不涉及编程语言,什么是值传递和引用传递:
值传递:是指在调用函数时将实参复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实参。
引用传递:是指在调用函数时将实参的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实参。
但在Java中,只有值传递:
在调用方法时:
- 如果传递的参数是基本类型,传递的是 该基本类型的值 的拷贝;
- 如果传递的参数是引用类型,传递的是 该引用变量所引用的对象在堆中地址 的拷贝。
--------------------------------------------------------------------------------------------------------------------------------------
退一万步讲,假设引用类型的传递过程是引用传递的话,那实参传递给形参的值,也应该是该实参的地址,而不是该实参所引用的对象的地址。所以假设不成立,Java中只有值传递。