黑马程序员技术交流社区

标题: 关于数组的这个初始化定义 [打印本页]

作者: 王亚飞    时间: 2012-7-10 13:35
标题: 关于数组的这个初始化定义
定义一个数组,和初始化一个数组是一个意思么?
int [] arr = new int []{1,2,3,4,5,6};和
int []  arr = {1,2,3,4,5,56,6,7};
这么定义数组有什么区别吗
作者: 万宝东    时间: 2012-7-10 13:51
定义一个数组是int[] arr;这个时候在栈内存中分配空间。
初始化数组int [] arr = new int []{1,2,3,4,5,6};,这个时候在堆内存中创建一个对象,并且数组的长度及其中的值都是在堆内存中,最后把堆内存中的对象的引用指向栈内存中的 arr。
至于int [] arr = new int []{1,2,3,4,5,6};和
int []  arr = {1,2,3,4,5,56,6,7};这两个都是对的 ,我感觉没什么差别,只是第二种不用写new是由虚拟机自动添加的。这是我的理解。
作者: 廖智    时间: 2012-7-10 14:09
万宝东 发表于 2012-7-10 13:51
定义一个数组是int[] arr;这个时候在栈内存中分配空间。
初始化数组int [] arr = new int []{1,2,3,4,5,6}; ...

定义一个数组:就是在堆内存中开辟了一个空间,这个空间存储的都是同一类型的数据。
初始化一个数组:我们在定义数组时,可以给每个元素进行赋值,这就是初始化一个数组。  而且数组元素在定义时就有一个默认初始化值,值为0
int [] arr = new int []{1,2,3,4,5,6};和
int []  arr = {1,2,3,4,5,56,6,7};
这两个数组定义的内容没有区别,只是第二种定义方式是第一种定义的简写格式。
作用都是定义了一个数组然后给里面的元素进行初始化赋值, 元素值为1,2,3,4,5,56,6,7。

希望对你有帮助
作者: 王亚飞    时间: 2012-7-10 14:50
万宝东 发表于 2012-7-10 13:51
定义一个数组是int[] arr;这个时候在栈内存中分配空间。
初始化数组int [] arr = new int []{1,2,3,4,5,6}; ...

哦,谢了
作者: 王亚飞    时间: 2012-7-10 14:51
廖智 发表于 2012-7-10 14:09
定义一个数组:就是在堆内存中开辟了一个空间,这个空间存储的都是同一类型的数据。
初始化一个数组:我 ...

明白了,谢了
作者: 王亚飞    时间: 2012-7-10 14:51
廖智 发表于 2012-7-10 14:09
定义一个数组:就是在堆内存中开辟了一个空间,这个空间存储的都是同一类型的数据。
初始化一个数组:我 ...

明白了,谢了
作者: 马州州    时间: 2012-7-11 20:11
int [] arr = new int []{1,2,3,4,5,6};和
int []  arr = {1,2,3,4,5,56,6,7};
内容的意思是一样的,但是在使用上还是有一定得区别的
第二种是简化的定义,一般我们在定义的时候就用这个,上面那个朋友说的很清楚了
这样定义是没有太大区别的
第一种写法有些繁琐了点吧,但是也没错,意思是一样的
但是在使用上有一点区别了
int [] arr = new int [];
在我们要用存放元素的时候,这个是定义一个临时的容器来存放数组
为了方便我们自己敲代码,我还是推荐在定义的时候区分一下,会方便一点




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