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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 党巾水 中级黑马   /  2012-7-13 11:58  /  1781 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘馨琪 于 2012-7-13 12:12 编辑

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

7 个回复

倒序浏览
null是没有为数组分配内存空间 而如果是个数为零 则是已经为其分配空间 但是没有数据而已
回复 使用道具 举报
楼上正确
回复 使用道具 举报
int arr[] = null;
int arr[] = new int[0];
数组为null,指的就是数组是指向一个空引用,在堆内存中没有开辟空间
而数组长度为0,即使是0它也是指向一个实体数组对象,在堆内有这个实体的空间
只是数组没没有元素而已
回复 使用道具 举报
1、arr=null表示你在北京没有房子,arr.length()=0表示你在北京有房子了,但是没住人
这句话的意思和系统已经给你分配了空间,但是没有赋值是一个意思.
2、为什么会存在已经分配了空间,但是没有赋值的情况呢,因为我现在有个朋友来北京了,
我在北京有个空房子,就可以给他住,如果我没有房子的话,就要买个房子给他住T T
回复 使用道具 举报
谢谢各位,明白了~
回复 使用道具 举报
位雪 中级黑马 2012-7-13 12:16:01
7#

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