代码
public class Example {
static int[] member;
public static void main(String[] args) {
int[] ic = new int[0];
if (ic == null){
System.out.println("ic is null");
}
System.out.println(ic); // [I@659e0bfd
if(member == null){
System.out.println("member is null");
}
}
}
很明显,元素不能添加到零长度数组中。
如果ic
不是ic
,null
指向什么?
如下图所示,ic
是否指向内存位置659e0bfd
(为空)?
答案 0 :(得分:4)
如果它不为空,那么ic指向什么?
它指向零容量的空数组。数组是引用类型,并为它们分配内存空间,就像任何其他引用类型一样。
答案 1 :(得分:3)
想象一个数组作为一个盒子。你可以声明一个有一些容量的盒子,比如3
int[] x = new int[3];
您将收到此框:[_,_,_]
。你可以填写一些数字
x[1] = 9;
获取[_,9,_]
。相反,你所做的是声明零容量框
int[] x = new int[0];
得到这个:[]
。并猜测如果你尝试添加一个元素会发生什么?你不能。
那么,要回答你的问题,ic
指向的是什么?你的空(和零容量)框。
答案 2 :(得分:2)
ic
指的是一个空数组实例。它不包含任何元素(ic[i]
会为ArrayIndexOutOfBoundsException
的每个值抛出i
,但它不是空的。