【发布时间】:2021-08-14 03:24:13
【问题描述】:
请帮助我理解为什么下面的代码会抛出 ArrayIndexOutOfBoundsException
Integer[][] arr1 = { { 1, 2, 3 }, { null }, { 7, 8, 9 } };
System.out.println("value = " + arr1[1][1].intValue());
对一维数组执行类似代码时会抛出 NullPointerException。
Integer[] arr2 = { new Integer(1) , null , new Integer(2) };
System.out.println("value = " + arr2[1].intValue());
据我了解,我应该为一维和二维数组获得 NPE。
【问题讨论】:
-
在第一种情况下,
arr1[1]是{null},一个带有 one 元素的数组。所以arr1[1][1]是一个索引错误。在第二种情况下,arr2[1]为 null,因此尝试对其调用方法会产生 NPE。 -
如果您尝试使用
arr1[1][0]访问空元素,那么您将获得NPE。 -
@GriffeyDog 澄清一下,通过
arr1[1][0]访问null不会导致NPE。但是之后我们成功访问它arr1[1][0].intValue()会变成null.intValue()并且那个call会抛出NPE。 -
@Pshemo 这就是我在评论中的意图,访问该元素上的
intValue方法。我的意思是null元素位于索引 0,而不是 1。
标签: java arrays exception indexoutofboundsexception