java中数据参数调用在内存中的过程
java中数据参数调用在内存中的过程
传参
1.基本数据类型
基本类型作为方法参数传递的时候,不论方法调用过程中做了什么事情,都不会影响方法调用外传递的值。
下例中x y 的输出值为3,4,不做改变
解析:
基本数据类型是在内存中已经指定好了内存地址,3的地址存放在x中,4的地址存放在y中
方法调用:
用a获取了x表示的地址,
b获取了y表示的地址,
然后通过中间变量对a,b所代表的的地址进行了交换,此时a表示的是4的地址,b表示的是3的地址
调用结束后,方法出栈,局部变量a,b销毁,此时main方法中的x y所代表的地址并未发生变化。
2.引用数据类型
引用类型作为方法参数传递的时候,也是传递值(地址)。所以,
如果在方法执行过程中,没有操作引用数据类型的内容。则调用前后不影响。
如果在执行过程中,操作了引用数据类型的内容,则调用之后,在方法外面访问到的是最新的内容。
解析:
main方法中制定了两个变量x y分别表示两个一维数组的堆内存地址,
reType方法定义两个变量a b接收了地址,
利用第三变量c对两个变量地址进行了交换
此时a表示的是之前y表示的地址,b表示的是之前x表示的地址
数据修改
将a或者y表示地址的内存数据进行了修改,改为10
将b或者x表示地址的内存数据进行了修改,改为20,
重新在main方法使用x表示的地址进行访问,数据已发生了变化,
此时x y数据都变化了