ArrayIndexOutBoundException
是数组越界异常,非常常见的一个异常。
从字面意思理解是数组下标访问错误,通常是在使用的时候访问了错误的数组下标。
个人觉得这个问题的出现一般是搞混了数组长度和下标的问题:
数组的长度,是指数组中元素的个数,也就是xx.length=元素个数
int a[]={1,2,3};
System.out.println(a.length);//3
而数组的下标是从0开始算的,最后一个元素的下标正好是length-1
a[0]=1,a[1]=2,a[2]=3;
如果说某个数,比如i<a.length,那么i最大能取的数就是length-1,如果a.length最大是3,那么i最多是2;
在用i表示下标时,如果我们让i取a.length,那么就会发生数组越界异常。
在java中的数组分配是从0到length-1的空间:
int a[]={1,2,3,4,5};
具体分配情况如下:
a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5;
我们最多只能调用a[4],不能使用a[5],使用a[5]=数组越界
解决方法是查看程序中访问数组时是否访问了length长度的下标