4

我正在学习 OCA Programmer I Oracle 认证,因此我正在复习考试中可能出现的所有棘手问题。一个是这个:

int [] zero = new int[0];

这样一个在构造函数中声明为 0 的数组在堆中实际会做什么?创建对什么的引用?我已经尝试查看它是否给出 null 并且它没有。(零!= null)通过测试。

你有什么主意吗?提前致谢。

4

3 回答 3

5

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

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

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

  3. 还需要用于跟踪垃圾收集对对象的引用的附加信息。

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

当这个数组有用时更有趣的问题,阅读这个stackoverflow问题。

于 2013-02-04T09:09:21.800 回答
3

在堆中实际会做什么?

一个长度为零的 int 数组。

创建对什么的引用?

对长度为零的 int 数组的引用。

我已经尝试查看它是否给出 null 并且它没有

为什么要呢?

于 2013-02-04T08:52:42.900 回答
1

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

于 2013-02-04T09:08:44.010 回答