数组由0个元素组成。 (JAVA)

时间:2013-02-04 08:50:03

标签: java

我正在攻读OCA程序员I Oracle认证,因此我正在审查考试中可能出现的所有棘手问题。 一个就是这个:

int [] zero = new int[0];

这样的数组在构造函数中声明为0,在堆中实际执行什么操作?创建参考什么? 我已经试过看它是否给出null,但它没有。 (零!= null)通过测试。

你知道吗?提前谢谢。

3 个答案:

答案 0 :(得分:5)

零长度数组仍然是一个数组,内存将分配给该数组。

  1. 数组实现Object。 Object是一个带有方法字段的类。

  2. 大小也是内存中的附加字段,表示数组的大小。

  3. 还需要跟踪垃圾回收对象引用的其他信息。

  4. 因此,所有这些都需要内存分配。

    当这个数组有用时,更有趣的问题,请阅读此stackoverflow question.

答案 1 :(得分:3)

  

堆中实际会做什么?

零长度的int数组。

  

创建对什么的引用?

对零长度int数组的引用。

  

我已经尝试过查看它是否为null而且它不是

为什么要这样?

答案 2 :(得分:1)

Java中的数组是对象。例如,它具有“长度”变量。以及相关数据。因此,即使您创建0大小的数组,只有数据部分的大小为零。数组对象的其他部分仍然存在。