Java基础_64. 数组_多个数组执行内存相同内存图

这里并没有new 一个数组, 所以不会在堆内存中产生新的空间.

只是把arr 的值, 也就是地址值001 赋值给了 arr2, 也就是把数组arr 的地址值赋值给了 arr2.

 

 下面通过第2个数组arr2 去修改了索引0,1,2 处的元素值.

 

分析内存图

第1行代码执行完成之后的内存图情况.

详见62.单个数组内存图.

 

 这3行代码把元素值进行修改.

修改完毕之后, 输出值.

 

 int[] arr2 = arr; 的执行流程

首先arr2 先进入栈内存.

接着把arr 的值赋值给arr 2.

 赋完值之后, arr2 的值就是001了.

 这行代码执行完成之后, 就实现了多个数组的指向相同.

 

 

接下来通过 arr2 的012索引去修改元素值, 因为arr2 也指向001 这块内存空间.

所以arr2 修改的就是这块内存空间的数值.

 修改完成

输出值.

 总结: 当两个数组指向相同的时候, 任何一个数组修改了堆内存里的数据, 另一个数组去访问的时候, 访问到的元素值也是发生改变的.

代码演练

 控制台输出 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值