java基础知识---参数传递问题

提问:Java中,参数传递的方式是值传递,那为什么当方法中传递的是数组时,修改数组的元素,原数组的元素也会改变?

理解这个值,是地址的值,还是本身的值。对于基本数据类型,String等,传的是本身的值;对于Object等 传的是地址的值。

我是这么理解的,所以说Java中,参数传递的方式是值传递
 

值传递,你可以这么理解

 

因为传递过去的数组是一个内存地址

在Java中,数组作为形参,其实算是引用传递,局部变量表中存放的就是这个数组的引用。

如果对形参(数组变量)重新赋值,是改变了局部变量表中的值(这个值是引用,这个引用指向原数组,所以广义上也可以叫值传递),就不会影响到原来的对象。

如果对形参(数组变量)的某个元素重新赋值,是通过局部变量表中的值(引用),拿到原数组对象去修改。所以就影响到了原来的对象。