Java中的值传递

本文最后更新于:2022年8月7日 上午

尽量用自己的话说明白

值传递

首先,Java中只有值传递。

  • 对于基本数据类型,传递的值的内容是 实参的值的拷贝;
  • 对于对象,传递的值的内容是 实参的地址的拷贝;

Java中调用函数时,传入的是实参,函数的定义中括号内的是形参。

对于基本数据类型 int double

对于调用函数func(int a),先将传入的实参复制一份,然后将该复制的值传递给形参。
形参得到的是一个值的复制,是局部的,对于这个局部值的改变不会影响实际参数的值。

对于对象 Object

调用函数func(Object obj),先将传入的实参的地址复制一份,然后将该地址的拷贝传递给被调函数的形参。
这样,现在就有2个地址的值,分别是原来的实参的地址和拷贝得到的地址,这两个地址指向堆中同一个对象。
此时,对于形参所指的对象进行变更,就会改变实际参数的值。

参考资料:

https://mp.weixin.qq.com/s?src=11&timestamp=1659755520&ver=3965&signature=KUjgtEnSxCuO8nEbIM18w8Z8a4TEbXL0MdxMxSeNcDDnMcmk-oqgSsixtbFQQr7CDWCaYJX*nPD0xjb9pJTM-1F7fGH2qu7u5SN8QI3l7SrIM2vKHppWek8FQLQ2yggi&new=1


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!