黑马程序员技术交流社区

标题: 数组为空 [打印本页]

作者: 党巾水    时间: 2012-7-13 11:58
标题: 数组为空
本帖最后由 刘馨琪 于 2012-7-13 12:12 编辑

一个数组为null 和一个数组元素个数为0,有什么区别?谢谢!

作者: 赵倩倩    时间: 2012-7-13 12:03
null是没有为数组分配内存空间 而如果是个数为零 则是已经为其分配空间 但是没有数据而已
作者: 淡然    时间: 2012-7-13 12:04
楼上正确
作者: 徐然    时间: 2012-7-13 12:06
int arr[] = null;
int arr[] = new int[0];
数组为null,指的就是数组是指向一个空引用,在堆内存中没有开辟空间
而数组长度为0,即使是0它也是指向一个实体数组对象,在堆内有这个实体的空间
只是数组没没有元素而已
作者: 冯大卫    时间: 2012-7-13 12:10
1、arr=null表示你在北京没有房子,arr.length()=0表示你在北京有房子了,但是没住人
这句话的意思和系统已经给你分配了空间,但是没有赋值是一个意思.
2、为什么会存在已经分配了空间,但是没有赋值的情况呢,因为我现在有个朋友来北京了,
我在北京有个空房子,就可以给他住,如果我没有房子的话,就要买个房子给他住T T
作者: 党巾水    时间: 2012-7-13 12:12
谢谢各位,明白了~
作者: 位雪    时间: 2012-7-13 12:16

长度为0的数组称为“空数组”,arr.length()=0表示系统给这个arr数组对象已经分配了内存空间,只是没有元素
arr=null表示系统根本没有给这个arr数组对象分配内存空间,null数组是一个空引用。
假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,
而如果返回空数组,则无须null引用检查。因此,返回数组的方法在没有结果时通常返回空数组,而不是null,
这样处理比较方便。




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