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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左华清 黑马帝   /  2012-2-16 00:35  /  6087 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 左华清 于 2012-2-18 20:38 编辑

int[] zero = new int[0];
int[] nil = null;
请问这两者主要有什么区别

5 个回复

正序浏览
长度为0,但它还是一个数组对象,只不过它没内容
至于null。。如果一个对象等于null则不能调用这个对象的方法。否则会产生空指针异常。所以很多时候要判断一个对象是否为空。
回复 使用道具 举报
学习了,谢谢!
回复 使用道具 举报
长度为0,说明它是一个数组对象,只不过它没内容,它可以调用length属性。为null,说明它只是一个声明了变量,没有指向一个有效的数组,什么都做不了
回复 使用道具 举报
int[] n;        //只声明了一数组变量;                             
int[] nil = null;        //声明一数组变量,并赋值 null;                             
int[] zero = new int[0];  //声明并创建一数组对象,长度是0;

上面三条语句,一个比一个做的动作多,系统占用也是后面的多,
语句一变量还没初始化,打印 n 会出错:“可能尚未初始化变量 n”,
语句二虽已初始化,打印“nil.length”会出现异常:NullPointerException,
语句三打印“nil.length”是0,数组内还没有元素。
回复 使用道具 举报
int[] zero = new int[0];
int[] nil = null;

长度为0和指向null的区别。

区别很大啊。new int[0];只在堆中创建对象,并且长度是0.所以呢只在堆中开辟了4Byte的空间。
null是空指针,在内存地址中,不指向任何地址。不会指向堆栈也不会指向堆。

评分

参与人数 1技术分 +1 收起 理由
技术测试刘老师 + 1 李扬表现不错啊,继续加油!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马