null数组和空数组有什么区别?

时间:2014-12-15 03:15:14

标签: java arrays

如果未初始化int数组的各个元素,默认情况下会存储哪些元素?我显然发现有类似空数组或空数组的东西。有什么区别,哪一个适用于我的第一个问题?

4 个答案:

答案 0 :(得分:24)

从技术上讲,没有 null数组这样的东西;但由于数组是对象,数组类型是引用类型(即:数组变量只是将引用保存到数组中),这意味着数组变量可以是null而不是实际指向一个数组:

int[] notAnArray = null;

empty 数组是一个长度为零的数组;它没有元素:

int[] emptyArray = new int[0];

永远不会拥有元素,因为数组的长度在创建之后永远不会改变。)

当您创建 -empty数组而未指定其元素的值时,它们默认为零值 - 对于整数数组0null表示整数数组对象类型的数组等;所以,这个:

int[] arrayOfThreeZeroes = new int[3];

与此相同:

int[] arrayOfThreeZeroes = { 0, 0, 0 };

(虽然这些值可以在之后重新分配;数组的长度不能改变,但其元素可以改变)。

答案 1 :(得分:1)

默认情况下,java根据声明的类型初始化数组。它是int然后它被初始化为0.如果它是object类型的对象,那么它被初始化为null。

答案 2 :(得分:0)

  

如果未初始化int数组的各个元素,默认情况下会存储哪些元素?

0

空数组是包含0个元素的数组

我还没有听说过null数组,但它可能是一个非零元素引用的数组null

答案 3 :(得分:0)

数组将其成员初始化为默认值。对于int,默认值为0.对于Object,它是nullnull数组是null Array Reference(因为数组是Java中的引用类型)。

JLS-4.12.5 Initial Values of Variables部分说

  

对于int类型,默认值为零,即0.

  

对于所有引用类型(第4.3节),默认值为null。