为什么在Java中会出现ArrayIndexOutOfBoundsException?

   抛出ArrayIndexOutOfBoundsException异常,以指示已使用非法索引访问了数组。索引为负或大于或等于数组的大小。  

例如,请参见下面的代码片段:

String[] vowels = new String[]{"a", "i", "u", "e", "o"}
String vowel = vowels[10]; // 引发ArrayIndexOutOfBoundsException

在上方,我们创建了一个vowels包含五个元素的数组。这将使数组在之间具有索引0..4。在下一行中,我们尝试访问非法的数组的第十个元素。此语句将导致ArrayIndexOutOfBoundsException抛出。

我们必须了解Java中的数组是零索引的。数组的第一个元素将在索引0的位置,最后一个元素将在索引 数组长度 - 1 的位置。因此,在访问数组元素时要小心数组索引。例如,如果您有一个包含5个元素的数组,则意味着该数组的索引是从0到4。

如果您尝试使用for循环来迭代数组。确保索引从0开始,并在索引小于数组长度时执行循环,您可以使用arraylength属性获取数组的长度。让我们看看下面的代码片段:

for (int i = 0; i < vowels.length; i++) {
    String vowel = vowels[i];
    System.out.println("vowel = " + vowel);
}

或者,如果不需要索引,则可以使用for-each或增强的for循环语句而不是经典的for循环语句来简化代码,如下所示:

for (String vowel : vowels) {
    System.out.println("vowel = " + vowel);
}