java在存储数组时栈内存和堆内存的联系

 我来答
清心又谦恭丶布丁9
推荐于2018-08-09 · TA获得超过6605个赞
知道小有建树答主
回答量:1247
采纳率:100%
帮助的人:1879万
展开全部
先这样分开写,方便解释
int[] a=null;//声明数组,也是引用
a=new int[5];//分配内存地址。

好了,数组的引用,也就是a,当你在声明的时候,他会在栈中开辟一个地址空间。也就是第一步
第二步的作用,是在堆中开辟一系统连续的地址,具体的需要根据你的类型还有数组长度。

总结下,也是,数组的引用保存在栈中,同时实例的时候在堆中开辟连续空间,栈中的空间指向堆的首地址。

再稍微说明一下,为什么我们平常说不new不可以对数组进行操作呢??因为此时堆中没有分配内存地址。所以你的数据没有地方存放和操作。
568145421
2011-09-22 · 知道合伙人软件行家
568145421
知道合伙人软件行家
采纳数:1353 获赞数:6756

向TA提问 私信TA
展开全部
你好,简单而不失准确的概括如下:
数组的引用保存在占内存中,在堆内存中开辟一片空间(连续的),然后栈内存上的引用指向这片空间的首地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式