黑马程序员技术交流社区

标题: 数组空值提问 [打印本页]

作者: 灰太狼爱平底锅1    时间: 2014-1-12 08:55
标题: 数组空值提问
形式一:int[] x = new int[0];
形式二:int[] y = null;
在Java中允许数组长度为0,但当编写一个结果维数组的方法时,如果碰巧结果为new int[0],这样的表现形式与形式二的null是否不同?求详解

作者: 贺利英    时间: 2014-1-12 09:38
是不同的,因为int [] x=new int[0];的形式表示:创建了一个数组,且此数组的长度为0,并且将此数组的地址值赋给变量x,即变量x指向此数组。而int[] y=null的形式,表示y并不指向任何的一个数组,即内存中并未创建让y指向的数组。
作者: FFF    时间: 2014-1-12 11:08
如果把这个看成是一个考试,

形式一:int[] x = new int[0]; 是考试为0分的
形式二:int[] y = null;     是根本就没来考试的
作者: 灰太狼爱平底锅1    时间: 2014-1-12 11:11
FFF 发表于 2014-1-12 11:08
如果把这个看成是一个考试,

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

恩。。比喻的好形象啊。。
作者: mrwise1991    时间: 2014-1-12 13:40
两种形式都定义了一个元素类型为整形的数组,但是前者调用了new分配了0个int型空间,而后者,直接赋予空值
作者: 无此姓名    时间: 2014-2-27 10:17
贺利英 发表于 2014-1-12 09:38
是不同的,因为int [] x=new int[0];的形式表示:创建了一个数组,且此数组的长度为0,并且将此数组的地址 ...

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

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

数组的长度为0 可以通过程序自己验证的。




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