黑马程序员技术交流社区

标题: 数组问题,来人回答一下,谢谢 [打印本页]

作者: 陨落″烟雨。    时间: 2014-4-20 22:53
标题: 数组问题,来人回答一下,谢谢
int [] arr = {12,12,3,5,3,5};
int [] arr =new int[]{12,12,3,5,1};
两个的区别!
作者: 错过了今天    时间: 2014-4-20 23:17
这两个都是给数组静态初始化,只不过第一种是第二种的简写格式
作者: 悠然丶    时间: 2014-4-20 23:32
都是数组的静态初始化方式,没有什么区别的
作者: 展展    时间: 2014-4-20 23:53
是有区别的在内存中的地方不一样。

int [] arr = {12,12,3,5,3,5};

它在内存中是在栈区的,

int [] arr =new int[]{12,12,3,5,1};

这个是在内存的堆区的。

栈区的数据进栈出栈很快,就像马路上的车,很忙
堆区的数据不是很忙碌,你new它,它才会给你一块内存块装数据,你不释放它,它很有可能一直存在。

具体我也说不太清楚,反正一个在栈区一个在堆区,你想理解深点,百度什么是栈区什么是堆区吧
作者: 陨落″烟雨。    时间: 2014-4-21 00:04
展展 发表于 2014-4-20 23:53
是有区别的在内存中的地方不一样。

int [] arr = {12,12,3,5,3,5};

哥哥,你说错了,其实这两种真的没有很大的区别,int [] arr = {12,3,2,1,3,4};
                                                                     int [] arr =new int[7]{12,3,2,1,4,5}
两个都是在堆内存中的,就是下面的如果在int[]里面给了固定的数值,就先定了空间,然后赋值的时候{12,3,2,1,4,5},超出了范围就会报错的,但是上面的就比较常用,因为赋多少就是多少空间,不会引起隐患。
所以哥哥你的回答有问题哦!
作者: 悠然丶    时间: 2014-4-21 00:05
int [] arr = {12,12,3,5,3,5};
这句代码同样会在堆内存中开辟空间的  arr记录的一样是地址值
作者: 展展    时间: 2014-4-21 00:07
陨落″烟雨。 发表于 2014-4-21 00:04
哥哥,你说错了,其实这两种真的没有很大的区别,int [] arr = {12,3,2,1,3,4};
                        ...

其实在java中真没多大区别。但是一个在堆区一个在栈区。java有很强的内存管理和回收机制,所以不必去管内存这方面。像是C++,在堆区申请内存不释放的话,程序不解释内存一直在堆区,所以C++中,new内存完之后,数据使用完毕之后必须del掉,不然内存一直存在,而java不会有这样问题,java内存管理处理得很好
作者: idream    时间: 2014-4-21 01:03
相同点:都是静态初始化,我们在定义的时候,就给值了
不同点:
           1,int[] arr =new int[]{12,12,3,5,1};  //是可以将声明和创建实体分开来进行的,即:
             int[] arr;
             arr = new int[]{12,12,3,5,1};

             而:int[] arr = {12,12,3,5,3,5};  //这种静态初始化必须定义在一行,不能先声明,后创建

          2,int[] arr = new int[]{12,12,3,5,1};  //是用new来创建实体,会在对内存中创建实体,只有当没有变量指向
                                                           //时,才会变成垃圾被处理,java会自动处理:垃圾处理机制                     
            int[] arr = {12,12,3,5,3,5};  //是在为变量赋值,在栈内存中完成的,当所在的方法出栈时,就会被释放
                                                 //空间
         扩展;//动态初始化,没有手动赋值,jvm会自动给默认初始化值,整形的都是0 , 即:
            int[] arr = new int[5];




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