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

2024-12-16 08:37:50
推荐回答(2个)
回答1:

先这样分开写,方便解释
int[] a=null;//声明数组,也是引用
a=new int[5];//分配内存地址。

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

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

再稍微说明一下,为什么我们平常说不new不可以对数组进行操作呢??因为此时堆中没有分配内存地址。所以你的数据没有地方存放和操作。

回答2:

你好,简单而不失准确的概括如下:
数组的引用保存在占内存中,在堆内存中开辟一片空间(连续的),然后栈内存上的引用指向这片空间的首地址。