新建类型[0]和null之间的区别 - Java

6
什么是区别?
这里所说的区别指什么?
type[] a = new type[0];

并且

type[] a = null;

这两种形式都会占用内存吗?它们有什么相似之处/不同之处?

2个回答

8
第一个 (new type[0]) 将会创建一个数组对象(因此占用内存)。你可以使用这个(大小为0的)数组对象,例如获取它的长度或迭代它,但你当然不能访问其中的任何元素。所以你可以将它传递给任何不对数组长度做出假设(而是进行适当检查)的函数,它将正常工作。
第二个 (null) 不会创建任何对象。如果你试图访问任何成员,就会得到一个异常。

-1

创建一个对象需要 3 步。

  1. 声明 type A[]; -> A 声明。 当你声明一个对象时,不会为实例占用任何内存,但是会为引用占用一些内存。

  2. 实例化 为此,您需要使用 'new' 关键字。 当您实例化一个对象时,会占用内存。

  3. 初始化 为此,您需要构造函数, 例如 -> type A[] = new A[size]; 就是这样。


这并不完全正确。即使是未分配的变量也会占用(可能会占用)一些内存。虽然不是实例的内存,但需要引用所需的内存。 - Honza Zidek
当然,即使是未分配的变量也会占用一些内存,但问题是我是否理解实例是否占用一些内存。对不起,你说得对。 - M Enes Turgut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接