📅  最后修改于: 2020-03-28 11:06:51             🧑  作者: Mango
Java支持将数组作为数据结构创建和处理。数组的索引是一个整数值,其值的间隔为[0,n-1],其中n是数组的大小。如果请求一个负数或索引大于或等于数组的大小,则Java会引发ArrayIndexOutOfBounds异常。这与C/C++不同,在C/C++中,没有完成边界检查的索引。
ArrayIndexOutOfBoundsException是仅在运行时引发的运行时异常。Java编译器在程序编译期间不会检查此错误。
// Java的一个典型越界异常
public class NewClass2
{
public static void main(String[] args)
{
int ar[] = {1, 2, 3, 4, 5};
for (int i=0; i<=ar.length; i++)
System.out.println(ar[i]);
}
}
运行时错误引发异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at NewClass2.main(NewClass2.Java:5)
输出:
1
2
3
4
5
在这里,如果您仔细地看一下,数组的大小为5。因此,在使用for循环访问其元素时,index的最大值可以为4,但是在我们的程序中它将达到5,因此是异常。
让我们来看另一个使用arraylist的示例:
// Java另一个越界异常
import java.util.ArrayList;
public class NewClass2
{
public static void main(String[] args)
{
ArrayList lis = new ArrayList<>();
lis.add("我的");
lis.add("名字");
System.out.println(lis.get(2));
}
}
与之前的时间相比,此处的运行时错误提供了更多信息
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at Java.util.ArrayList.rangeCheck(ArrayList.Java:653)
at Java.util.ArrayList.get(ArrayList.Java:429)
at NewClass2.main(NewClass2.Java:7)
让我们详细了解一下:
访问数组的正确方法是:
for (int i=0; i
处理异常:
for(int m:ar){
}