我正在学习OCA程序员I Oracle认证,因此我正在复习考试中可能遇到的所有棘手问题。一个是这个:
int [] zero = new int[0];
这样一个数组声明为在构造函数中具有 0 在堆中实际做什么? 创建对什么的引用?我已经尝试过查看它是否给出 null 并且没有。 (零 != null) 通过测试。
你有什么想法吗?提前谢谢。
零长度数组仍然是一个数组,内存将分配给这个数组。
-
数组实现对象。对象是一个具有方法和字段的类。
大小 也是内存中指示数组大小的附加字段。
还需要用于跟踪垃圾回收对对象的引用的其他信息。
因此,所有这些都需要内存分配。
当这个数组可以使用时,更有趣的问题,请阅读这个堆栈溢出问题。
在堆中实际要做什么?
零长度的 int 数组。
创建对什么的引用?
对零长度 int 数组的引用。
我已经尝试过查看它是否给出 null 并且没有
为什么呢?
Java 中的数组是对象。例如,它有"长度"变量。以及相关数据。因此,即使您创建一个 0 大小的数组,也只有数据部分的大小为零。数组对象的其他部分将仍然存在。