黑马程序员技术交流社区

标题: 关于数组长度为零以及为null的疑问 [打印本页]

作者: 根号5    时间: 2012-4-27 18:27
标题: 关于数组长度为零以及为null的疑问
int[] array = null   和int[] array = {}这两个什么区别?不大明白
我自己的理解是 前者 是表示这个数组存在,也就是给这个数组开辟了内存空间,但是没往里面存东西;后者指的是这个数组不存在。
前大家帮帮忙 给解释下区别
作者: 张卯    时间: 2012-4-27 18:34
饿~我理解的和你正好相反啊,前一个是指向空,没有开辟空间,后一个是指向对象,开辟了空间,但没有存数据。
作者: 光sail    时间: 2012-4-27 18:39
我的理解是两个数组都指向空,但没在内存中开辟空间
作者: 邱俊杰    时间: 2012-4-27 18:41
int[] array = null     数组在堆内存开辟空间、值为null , array 指向null;  System.out.println(array);   输出为null
int[] array1 = {}      数组在堆内存开辟空间、空间为空、array指向空间的地址。 System.out.println(array1);  输出为 地址
作者: 一生一世    时间: 2012-4-27 18:53
楼主理解反了,前者是在stack中声明了一个数组类型的变量,它的值为空,也就是说它没有指向heap中的任何空间,而后者不仅声明了数组,而且还在heap中开辟了空间,只不过空间里面没有任何数据罢了(当然数组的长度为0),可以这样理解前者只是数组的声明,后者却是数组的一种定义形式。
作者: prospect    时间: 2012-4-27 21:10
板凳理解的最准确。俩个都在内存中开辟空间,只是数组变量指向的值不同,一个是null,另外一个是内存地址




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