两种常见数组异常

1.数组越界异常

每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报错。

如下所示

 1   public class ArrayDemo06 {

 2       public static void main(String[] args) {

 3           int[] arr = new int[4]; // 定义一个长度为4的数组

 4           System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素

 5       }

 6   }

运行结果如下图所示。

 

上图运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的原因是数组的长度为4,其索引范围为0~3,而上述代码中的第4行代码使用索引4来访问元素时超出了数组的索引范围。

2.空指针异常

在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常,接下来通过一个案例来演示这种异常,如下所示。ArrayDemo07.java

 1   public class ArrayDemo07 {

 2       public static void main(String[] args) {

 3           int[] arr = new int[3]; // 定义一个长度为3的数组

 4           arr[0] = 5; // 为数组的第一个元素赋值

 5           System.out.println("arr[0]=" + arr[0]); // 访问数组的元素

 6           arr = null; // 将变量arr置为null

 7           System.out.println("arr[0]=" + arr[0]); // 访问数组的元素

 8       }

 9   }

运行结果如下图所示。

 

 

通过上图所示的运行结果可以看出,上述代码中第4、5行代码都能通过变量arr正常地操作数组。第6行代码将变量置为null,当第7行代码再次访问数组时就出现了空指针异常NullPointerException。

posted @ 2019-01-10 11:04  G大调  阅读(776)  评论(0编辑  收藏  举报