数组下标越界是一个编程初学者最容易犯的错误。
以一个简单的一维数组为例:
int a[10];这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到9结束,与生活习惯中的1-10不一样,于是产生一个a[10]的错误,即数组下标越界。
c和c++语言中数组下标越界,编译器是不会检查出错误的,但是实际上后果可能会很严重,比如程序崩溃等,所以在日常的编程中,程序员应当养成良好的编程习惯,避免这样的错误发生。
若编辑网页时提示“数组下标越界”,除检查下上述问题外,再检查下文件中变量名称是否一致,很多时候是变量名称不一致所致,使用的角标大于等于数组的长度或为负数!
一. 异常示例
对于刚开始学习Java的大部分人来说,在使用数组的过程中,经常会遇到数组下标越界的异常。下面波哥以一个实际案例来给大家进行说明:
public class ArrayTest {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
int number = numbers[5];
System.out.println(number);
}
}运行上面的程序,会出现如下异常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at ArrayTest.main(ArrayTest.java:4)二. 解决思路
很多初学者遇到异常时通常都不会查看异常信息,而是通过看代码来找出原因。当然,在代码很少的情况下,这是可以的。但这样会形成一个不良的习惯:在后续编码的过程中经常忽视异常信息,直接在编码中查找异常,在代码很多的情况下,找出异常的效率极低,还可能无法找到异常引发的原因。
正确解决异常的方式应该是首先查看异常信息,比如该案例中出现了ArrayIndexOutOfBoundsException 异常,这是一个数组下标超出范围的异常,也就是业内人士常说的数组下标越界。这个异常出现的位置如下:
at ArrayTest.main(ArrayTest.java:4)由这一行异常信息确定。也就是在 ArrayTest 这个类的第4行出现了数组下标越界异常。那么去查看第4行代码:
int number = numbers[5];既然是数组下标越界,那就是说访问数组 numbers 中下标为5的元素时,出现的异常。说明这里的下标5超出了数组 numbers 的下标范围。而数组 numbers 的定义如下:
int[] numbers = {1, 2, 3, 4, 5};由此可以看出,数组 numbers 的下标取值范围是0~4。而在使用过程中用了下标5,因此造成了数组下标越界异常。
为什么这里下标的取值范围是0~4, 这是由数组的基本特性决定的,这些都是基础知识,这块儿薄弱的同学可以在网上查阅资料进行学习,比如千锋教育官网就有一些免费的学习资料,当然你也可以在B站上找到这套资料,完全免费,为初学者打牢基础提供的一些干货。
【史上最强java零基础入门教程1000集,0基础学Java,专为小白打造(从java安装到java项目实战)-哔哩哔哩】 https://b23.tv/0Kzv25b
三. 总结
我们在处理异常的时候,一定要注意查看异常信息,快速定位出异常的位置,找到问题,解决问题。
今日份课程推荐,喜欢的同学评论区回复“666”!
精选第一名,可以领取办公鼠标垫一个哦!

点击【阅读原文】,全套入门Java资料免费学!
原文作者:Java架构栈;如有侵权,请联系管理员删除。