兩種常見陣列異常
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
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。