java中零长度的数组

时间:2015-07-12 12:01:43

标签: java arrays

代码

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不是icnull指向什么?

如下图所示,ic是否指向内存位置659e0bfd(为空)?

enter image description here

3 个答案:

答案 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,但它不是空的。