A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路西法 中级黑马   /  2014-4-7 11:04  /  768 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文




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

3 个回复

倒序浏览
我搜集到了两个图,看完楼主就明白了

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


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


希望可以帮到你。

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
zhangbingyuan 发表于 2014-4-7 11:28
我搜集到了两个图,看完楼主就明白了

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

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

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马