常见的数组异常
1、数组索引越界异常
在使用索引时,我们经常会碰到数组越界异常,报错信息为【 ArrayIndexOutOfBoundsException】
原因:访问了数组中不存在的索引。数组索引的范围是0~长度-1,超过了这个范围都是越界。
避免方法:不要访问不存在的索引。
例如:
public class ArrayTest {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5}; //声明与初始化,长度是5
arr[8] = 0; //,索引值越界,索引值是 0~4
for(int i = 0;i <= arr.length;i++){ //从0到5遍历,索引值越界
System.out.println(arr[i]);
}
}
}
数组下标取值越界主要是指访问数组的时候,下标的取值不在已定义好的数组的取值范围内,而访问的是无法获取的内存地址。
例如:
对于数组 int a[3],它的下标取值范围是 [0,2](即 a[0]、a[1] 与 a[2])。如果我们的取值不在这个范围内(如 a[3]),就会发生越界错误。示例代码如下所示:
int a[3];
int i=0;
for(i=0;i<4;i++)
{
a[i] = i;
}
for(i=0;i<4;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
很显然,在上面的示例程序中,访问 a[3] 是非法的,将会发生越界错误。因此,我们应该将上面的代码修改成如下形式:
int a[3];
int i=0;
for(i=0;i<3;i++)
{
a[i] = i;
}
for(i=0;i<3;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}