java把组数作为参数,尝试用两种方式改变数组的元素,结果不同的原因?

网上查了一下资料,讲的太复杂,看不懂,请教大神用简单易懂的方式解释一下!谢谢!用数组名来修改我知道可以改变,图片上注释掉的方式,结果不变,难道不也是用数组名的么,是为什么... 网上查了一下资料,讲的太复杂,看不懂,请教大神用简单易懂的方式解释一下!谢谢!用数组名来修改我知道可以改变,图片上注释掉的方式,结果不变,难道不也是用数组名的么,是为什么? 展开
 我来答
绝杀狂龙
2020-12-20 · TA获得超过1913个赞
知道小有建树答主
回答量:1310
采纳率:78%
帮助的人:593万
展开全部

配合内存分布图

当没有注释的代码时,此时在main方法中调用change方法,亮带然后将数组作为参数传递,此时传递的是地址值。虽然main方法中的arr和change方法参数里的arr看似名称一致,但是实际在栈中会有两份。就和上图一样。

本来main方法中的亏档arr就是指向0x1122地址的数组,然后将这个地址赋给了change方法参数里的arr,所以此时change方法里的arr也指向了0x1122地址的数组。所以如果对这个数组里的内容进行改动,通过两个arr访问都是一样的。所以通过change改动数组内容,main方法中也能够销键乱看到修改后的内容


如果加上注释的那一行代码。因为重新new一个新的数组,然后将其地址值改成了0x3344,所以change方法里的arr不再指向0x1122,所以你无论怎么修改内部数据,和main方法中的arr也没有关系



如上做一个简单的总结

就比如有两个人共用一个卫生间。一个人很邋遢给厕所里搞得很脏,另一个人进去就能看到厕所很脏

如果两个人各有一个卫生间。一个人哪怕在厕所生火做饭,另一个人也看不到

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式