可以帮忙画一下这个的内存图嘛

时间:1786次浏览2019.07.21提问

可以帮忙画一下这个的内存图嘛

已解决问题

hao231知道平台可亲可爱的初中生网友在1786次浏览2019.07.21提问提了关于Java编程相关的问题,他的提问会不会可以帮忙画一下这个的内存图嘛Java编程希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,当代劳模,所有人都应该向你学习 !

第1个回答

 2019.08.12回答提问者采纳首先说一下,在java中所有的传递都是引用传递。在变量中存储的并不是对象本身,而是对象的引用:图是借的,懒得画了。上面说了,java是引用传递,而不是值传递,也就是说,实际上传递给方法的是栈的值,及数组的引用。而修改数组的值时,程序会根据引用的值去堆里寻找实际的值,并对其修改。之后main方法中打印数组,变量中存储的也是对象的引用,并未修改,打印时去堆中寻找实际的值,即更改后的值。举个栗子:你盖了一间房子,里边有三张桌子(一个长度为3的数组)。房子被创建出来时,位置就不在变动(即在堆内开辟出的内存)。然后你在桌子上放了西瓜、苹果、桃子(即数组初始化)。然后你把房间的钥匙给了我,让我帮你照看一下房子(即传递参数给方法,并调用对象),我去了你的房子,吃了你的瓜,然后放了个芝麻。之后你回到家,家还是那个家,桌还是那个桌,只是桌上只有芝麻。

第2个回答

随风2019.08.14回答因为array函数的参数传递的是地址而不是复制值,所以两个方法里的数组变量其实是同一个,改一个,另一值也跟着改