什么是区别?
这里所说的区别指什么?
这里所说的区别指什么?
type[] a = new type[0];
并且
type[] a = null;
这两种形式都会占用内存吗?它们有什么相似之处/不同之处?
new type[0]
) 将会创建一个数组对象(因此占用内存)。你可以使用这个(大小为0的)数组对象,例如获取它的长度或迭代它,但你当然不能访问其中的任何元素。所以你可以将它传递给任何不对数组长度做出假设(而是进行适当检查)的函数,它将正常工作。null
) 不会创建任何对象。如果你试图访问任何成员,就会得到一个异常。创建一个对象需要 3 步。
声明 type A[]; -> A 声明。 当你声明一个对象时,不会为实例占用任何内存,但是会为引用占用一些内存。
实例化 为此,您需要使用 'new' 关键字。 当您实例化一个对象时,会占用内存。
初始化 为此,您需要构造函数, 例如 -> type A[] = new A[size]; 就是这样。