以二维数组 Integer[][] MAP = new Integer[100][2]为例,
实际上定义了一个包含100个元素的数组,每个元素本身也是一个数组,这个两个子数组又会包含两个Integer。
那么在执行 MAP[index] == null 时,实际上是判断 MAP 数组中第 index 个位置的元素是否为 null由于初始化了 MAP 为 new Integer[100][2],这表明你已经为每一个 index 从0到99分配了一个长度为2的数组。因此,在这种初始化之后,MAP[index] 不会为 null —— 它总是指向一个长度为2的数组
而当我们检查MAP[index][0] == null 时,则是判断index处的第1个元素是否为null,此时是否为null呢? 是
在Java中,对于对象类型的数组(如 Integer 类型),数组的默认初始化值是 null。因此,尽管 MAP[index] 是一个非 null 的数组,MAP[index][0] 和 MAP[index][1] 默认都是 null
当我们使用基本数据类型(如 int)或者 String 类型来定义二维数组时,情况会有所不同。
基本数据类型 int[][] MAP = new int[100][2];:对于 int 类型的数组,数组的默认值是 0。所以当你检查 MAP[index] == 0 时,这实际上是在检查数组的第 index 个位置是否包含值 0(在这种情况下,它总是 false)。如果你检查 MAP[index][0] == 0,你是在检查 MAP[index] 指向的数组的第一个元素是否为 0。String 类型 String[][] MAP = new String[100][2];:
对于 String 类型的数组,数组的默认值是 null。当你检查 MAP[index] == null 时,你是在检查数组的第 index 个位置是否为 null。
如果你检查 MAP[index][0] == null,你是在检查 MAP[index] 指向的数组的第一个元素是否为 null。
浙公网安备 33010602011771号