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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 dongyangzhang 于 2013-6-11 12:47 编辑

int[] arr = new int[10];//请把这行代码详细解释下?谢谢
System.out.println(arr[1]);

评分

参与人数 1技术分 +1 收起 理由
尹丽峰 + 1

查看全部评分

6 个回复

正序浏览
谢谢大家
回复 使用道具 举报
int[] arr = new int[10];
这句话是这样:
1. 在栈内存中开辟一个空间存放引用类型arr。
2.在堆内存中开辟一个连续的空间,用来存放数组,具体根据你的类型和长度来划分,你这里是长度为10,角标为0-9,默认值全部为0。
3.把堆内存中对象的首地址赋值给栈内存中的arr,使其指向堆内存中的对象。
我也在学习中,一起努力吧
回复 使用道具 举报
int[] arr = new int[10];//请把这行代码详细解释下?谢谢

赋值表达式  运行方向 从右向左  
所以 先执行new int[10];
一看见new  就知道 在堆内存中开辟空间   
分配数组内存首地址  
数组特点就是 开辟连续的内存空间 这里面是开辟了10个连续的内存空间 每个空间存放的元素类型就是int
因为 是在堆内存中开辟的  所以 存在里面的变脸都有默认值 所以 要进行默认初始化  (int 类型 默认是0  float默认是0.0f double默认 0.0 引用类型  默认 null 这些默认值 同样适用于 类的对象中的成员变量)  
这时候 右边表达式执行完毕
最后  数组的首地址赋值给左边在栈中定义的局部变量 int[]类型的引用变量 arr 所以 arr中的值就是对应数组在堆内存中的首地址

回复 使用道具 举报
new数组时候都是在堆内存中,如果不赋初始值,默认 int[]数组进去是0,String 是null
回复 使用道具 举报
本帖最后由 李晓峰 于 2013-6-10 23:14 编辑

不一定,如果数组的类型是类类型的,元素默认值为:null;
              如果数组的类型是double型,元素默认值为:0.0;              数组类型为int,short,long型,元素默认值为:0;
              boolean类型的数组,元素默认值为false。

回复 使用道具 举报 1 0
int[] arr = new int[10];
这是定义了一个数组,长度为10的,其中的默认的都是0,因为是整形,默认值是0,如果是字符串的类型,其中的默认值是null, 在内存中分配了10个存放整形的空间。希望对你有所帮助。

评分

参与人数 1技术分 +1 收起 理由
尹丽峰 + 1 很给力!

查看全部评分

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