java把组数作为参数,尝试用两种方式改变数组的元素,结果不同的原因?
网上查了一下资料,讲的太复杂,看不懂,请教大神用简单易懂的方式解释一下!谢谢!用数组名来修改我知道可以改变,图片上注释掉的方式,结果不变,难道不也是用数组名的么,是为什么...
网上查了一下资料,讲的太复杂,看不懂,请教大神用简单易懂的方式解释一下!谢谢!用数组名来修改我知道可以改变,图片上注释掉的方式,结果不变,难道不也是用数组名的么,是为什么?
展开
1个回答
展开全部
配合内存分布图
当没有注释的代码时,此时在main方法中调用change方法,亮带然后将数组作为参数传递,此时传递的是地址值。虽然main方法中的arr和change方法参数里的arr看似名称一致,但是实际在栈中会有两份。就和上图一样。
本来main方法中的亏档arr就是指向0x1122地址的数组,然后将这个地址赋给了change方法参数里的arr,所以此时change方法里的arr也指向了0x1122地址的数组。所以如果对这个数组里的内容进行改动,通过两个arr访问都是一样的。所以通过change改动数组内容,main方法中也能够销键乱看到修改后的内容
如果加上注释的那一行代码。因为重新new一个新的数组,然后将其地址值改成了0x3344,所以change方法里的arr不再指向0x1122,所以你无论怎么修改内部数据,和main方法中的arr也没有关系
如上做一个简单的总结
就比如有两个人共用一个卫生间。一个人很邋遢给厕所里搞得很脏,另一个人进去就能看到厕所很脏
如果两个人各有一个卫生间。一个人哪怕在厕所生火做饭,另一个人也看不到
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询