黑马程序员技术交流社区

标题: 关于数组内存分配的问题 [打印本页]

作者: 路西法    时间: 2014-4-7 11:04
标题: 关于数组内存分配的问题



数组分为有基本类型数组和引用类型数组,他们在初始化时内存 分配机制有什么区别?

作者: zhangbingyuan    时间: 2014-4-7 11:28
我搜集到了两个图,看完楼主就明白了

基本类型数组在初始化时:数组元素直接存放在堆内存中,当操作数组元素时,实际上是操作基本类型的变量。


引用类型数组在初始化时:数组元素仍然存放引用,指向另一块内存,在其中存放有效的数据。


希望可以帮到你。
作者: 路西法    时间: 2014-4-7 12:28
zhangbingyuan 发表于 2014-4-7 11:28
我搜集到了两个图,看完楼主就明白了

基本类型数组在初始化时:数组元素直接存放在堆内存中,当操作数组元 ...

谢谢!搞明白了
作者: syusikoku    时间: 2014-4-7 13:06
数组都是引用类型的。你可能当时没有搞明白数组在内存中的结构。int [] arr={12,5};这里其实是相当于int [] arr=new int[2]; arr[0]=12; arr[1]=5;其实左边的arr在执行的时候,它是在栈内存的方法获取这个要看方法的名称开辟的空间里面的有一个arr,然后右边是new这个时候它就会在堆内存中开辟空间。我们以格子来说,是两行。其实这就是我们常说的实体。实体有默认的初始化值。另外实体它有内存地址值。假设这个内存地址是0x5523,这个内存地址值标识数据存储的位置。其实是把这个地址值赋值给了栈内存中的变量arr,这个时候arr=0x5523,然后arr就指向了堆内存中的实体。我画了一个图,希望能帮的上你。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2