1. 程式人生 > >兩種常見陣列異常

兩種常見陣列異常

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。