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

17 java arrays

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

rua*_*akh 26

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

int[] notAnArray = null;
Run Code Online (Sandbox Code Playgroud)

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

int[] emptyArray = new int[0];
Run Code Online (Sandbox Code Playgroud)

(并且永远不能有元素,因为数组的长度在创建之后永远不会改变).

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

int[] arrayOfThreeZeroes = new int[3];
Run Code Online (Sandbox Code Playgroud)

与此相同:

int[] arrayOfThreeZeroes = { 0, 0, 0 };
Run Code Online (Sandbox Code Playgroud)

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

  • 对于布尔数组,默认值为 false (3认同)