ITPub博客

首页 > 数据库 > 数据库开发技术 > 前方高能丨手把手教你解决ArrayIndexOutOfBoundsException数组越界异常!

前方高能丨手把手教你解决ArrayIndexOutOfBoundsException数组越界异常!

原创 数据库开发技术 作者:Finally_m 时间:2022-08-11 08:03:00 0 删除 编辑
点击上方蓝字关注我们

一. 前言

最近很多初学java的小伙伴,甚至有些学习到JavaWeb或框架阶段的小伙伴跑来问健哥,该如何解决Java中的ArrayIndexOutOfBounds Exception数组越界异常。既然这个异常这么常见,那么健哥就在这里手把手地教大家分析解决掉这个问题,让你以后不再被这个异常给吓退。

二. 异常现象

首先我们来看看下面这段代码。这段代码运行时就会出现ArrayIndexOutOfBoundsException数组越界异常。

package test;

/**
 * @author 千锋健哥
 */

public class TestArrayException {

    public static void main(String[] args) {
        String[] strArray = {"千锋健哥", "数组越界演示"};
        System.out.println("=======" + strArray[2]);
    }
}

/**
 * @author 千锋健哥
 */

public class TestArrayException2 {

    public static void main(String[] args) {
        String[] strArray = {"千锋健哥", "数组越界演示"};

        for(int i = 0; i <= 9; i++) {
            System.out.println("===打印数组中第"+i+"个元素的值===" + strArray[i]);
        }
    }
}

运行结果:

三. 异常原因

那么为什么上面的代码会出现这个异常呢?健哥一步一步地来给各位小伙伴,分析解释一下产生这个异常的原因。

  • String[] strArray = {"千锋健哥", "数组越界演示"}; 这个数组中有两个元素, 他们分别是"千锋健哥" 和"数组越界演示";

  • 因为数组的索引号从0开始计数,所以"千锋健哥"的索引号为0, "数组越界演示"的索引号为1;System.out.println ("===" + strArray[2]);

  •  这里调用索引号为2的元素,而strArray数组中根本就没有这个索引号,因为当前数组的最大索引号是1,所以就抛出了ArrayIndexOut OfBoundsException异常提示信息;

  • 而下面代码for(int i = 0; i <= 9; i++)是遍历循环10次, 每次变量i的值加1;

  • System.out.println("=打印数组中第"+i+"个元素的值=" + strArray[i]); 打印数组中索引号为变量i的元素值,其中遍历第一次i的值为0,遍历第二次i的值为1,数组中都有这些索引的元素值。当第三次遍历的时候,i的值为2,这时数组strArray中没有这样的索引元素值,已经超过了数组的最大长度,所以抛出ArrayIndexOutOfBoundsException异常提示信息。

四. 解决办法

既然问题的原因找到了,那么我们就很容易解决这个问题了,解决过程如下:

  • 当程序一旦抛出ArrayIndexOutOfBoundsException异常的时候,那就说明某个地方使用或者调用了超过数组最大长度的元素,而这样的元素是不存在的;

  • 从运行截图中,我们找到提示异常的所在行数,是在TestArray Exception类的第10行和第14行报错;

  • 那么说明就是在第10行和第14行代码中有问题,我们将调用数组元素的索引号,改为数组中存在的索引号即可。

五. 总结

所谓的ArrayIndexOutOfBoundsException数组越界异常,其实就是代码中有地方调用了数组中的某个元素,然后该元素的索引超过了数组的最大长度,但该元素在数组中并不存在,从而报错。所以我们只需要找到调用数组元素的代码所在,将调用的索引号改为数组中存在的索引号即可。

本月福利,关注公众号回复【福利】抢书咯!

今日份干货,学会的同学回复“666”!

精选第一名,可以领取办公鼠标垫一个!

点击【阅读原文】,零基础免费学Java!

原文作者:Java架构栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-04-13

  • 博文量
    573
  • 访问量
    243893