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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陨落″烟雨。 中级黑马   /  2014-4-20 22:53  /  1292 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int [] arr = {12,12,3,5,3,5};
int [] arr =new int[]{12,12,3,5,1};
两个的区别!

7 个回复

正序浏览
idream 中级黑马 2014-4-21 01:03:29
8#
相同点:都是静态初始化,我们在定义的时候,就给值了
不同点:
           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];

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
展展 中级黑马 2014-4-21 00:07:57
7#
陨落″烟雨。 发表于 2014-4-21 00:04
哥哥,你说错了,其实这两种真的没有很大的区别,int [] arr = {12,3,2,1,3,4};
                        ...

其实在java中真没多大区别。但是一个在堆区一个在栈区。java有很强的内存管理和回收机制,所以不必去管内存这方面。像是C++,在堆区申请内存不释放的话,程序不解释内存一直在堆区,所以C++中,new内存完之后,数据使用完毕之后必须del掉,不然内存一直存在,而java不会有这样问题,java内存管理处理得很好
回复 使用道具 举报
int [] arr = {12,12,3,5,3,5};
这句代码同样会在堆内存中开辟空间的  arr记录的一样是地址值
回复 使用道具 举报
展展 发表于 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},超出了范围就会报错的,但是上面的就比较常用,因为赋多少就是多少空间,不会引起隐患。
所以哥哥你的回答有问题哦!
回复 使用道具 举报
是有区别的在内存中的地方不一样。

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

它在内存中是在栈区的,

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

这个是在内存的堆区的。

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

具体我也说不太清楚,反正一个在栈区一个在堆区,你想理解深点,百度什么是栈区什么是堆区吧

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报 0 1
都是数组的静态初始化方式,没有什么区别的
回复 使用道具 举报
这两个都是给数组静态初始化,只不过第一种是第二种的简写格式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马