以二维数组 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

posted on 2024-04-15 23:22  XiSoil  阅读(5)  评论(0编辑  收藏  举报