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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 灰太狼爱平底锅1 中级黑马   /  2014-1-12 08:55  /  1420 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

形式一:int[] x = new int[0];
形式二:int[] y = null;
在Java中允许数组长度为0,但当编写一个结果维数组的方法时,如果碰巧结果为new int[0],这样的表现形式与形式二的null是否不同?求详解

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

6 个回复

倒序浏览
是不同的,因为int [] x=new int[0];的形式表示:创建了一个数组,且此数组的长度为0,并且将此数组的地址值赋给变量x,即变量x指向此数组。而int[] y=null的形式,表示y并不指向任何的一个数组,即内存中并未创建让y指向的数组。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报 1 0
如果把这个看成是一个考试,

形式一:int[] x = new int[0]; 是考试为0分的
形式二:int[] y = null;     是根本就没来考试的
回复 使用道具 举报
FFF 发表于 2014-1-12 11:08
如果把这个看成是一个考试,

形式一:int[] x = new int[0]; 是考试为0分的

恩。。比喻的好形象啊。。
回复 使用道具 举报
两种形式都定义了一个元素类型为整形的数组,但是前者调用了new分配了0个int型空间,而后者,直接赋予空值

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 +1鼓励分!加油

查看全部评分

回复 使用道具 举报
贺利英 发表于 2014-1-12 09:38
是不同的,因为int [] x=new int[0];的形式表示:创建了一个数组,且此数组的长度为0,并且将此数组的地址 ...

也就是说int[0]在内存中也被创建? 那这时x的会有具体的地址值吗?  如果有就是说x指向一个地址(在堆中至少有一个空间是给这个数组的),这时候这个数组长度为1啊??

新手讨教,真的不清楚
回复 使用道具 举报
无此姓名 发表于 2014-2-27 10:17
也就是说int[0]在内存中也被创建? 那这时x的会有具体的地址值吗?  如果有就是说x指向一个地址(在堆中 ...

数组的长度为0 可以通过程序自己验证的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马