数组角标越界异常
当访问数组元素时,下标指定超出[0, 数组名.length-1]的范围时,就会报数组下标越界异常:ArrayIndexOutOfBoundsException。
public class TestArrayIndexOutOfBoundsException {
public static void main(String[] args) {
int[] arr = {1,2,3};
// System.out.println("最后一个元素:" + arr[3]);//错误,下标越界
// System.out.println("最后一个元素:" + arr[arr.length]);//错误,下标越界
System.out.println("最后一个元素:" + arr[arr.length-1]);//对
}
}
创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException
数组越界异常。
空指针异常
public class TestNullPointerException {
public static void main(String[] args) {
//定义数组
int[][] arr = new int[3][];
System.out.println(arr[0][0]);//NullPointerException
}
}
因为此时数组的每一行还未分配具体存储元素的空间,此时arr[0]是null,此时访问arr[0][0]会抛出NullPointerException
空指针异常。
public class Pointer {
@Test
public void test1() {
//java.lang.NullPointerException
int[] arr1 = new int[10];
arr1 = null;
System.out.println(arr1[9]);
}
@Test
public void test2() {
int[][] arr2 = new int[5][];
arr2[3] = new int[10];
System.out.println(arr2[3][3]);
}
@Test
public void test3() {
//java.lang.NullPointerException
String[] arr3 = new String[10];
System.out.println(arr3[2].toString());
}
}