为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这会在运行时导致 ArrayIndexOutOfBoundsException?

为什么这会在运行时导致 ArrayIndexOutOfBoundsException?

慕桂英546537 2021-12-01 20:02:51
这是代码:public class Test {    public static void main(String[] args) {        int[] a= new int[3];        System.out.print(a[a.length]);    }}为什么这会在运行时导致 ArrayIndexOutOfBoundsExceptionwill ?
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

a.length 返回数组中元素的数量,这里是 3。

数组索引从 0 开始。有 3 个元素,它会变成 0,1,2。

没有索引 3,因此例外。


查看完整回答
反对 回复 2021-12-01
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

它从 0 开始,因此您必须更改为 [a.length - 1]


 public class Test{

       public static void main(String []args){

          int[] a= new int[3];

          System.out.print(a[a.length-1]);

       }

    }


查看完整回答
反对 回复 2021-12-01
?
炎炎设计

TA贡献1808条经验 获得超4个赞

你应该使用它:


public class Test{


     public static void main(String []args){

        int[] a= new int[3];

        System.out.print(a[a.length-1]);

    }

}

解释:


a.length将返回长度,即3(3 个现有字段)。但是索引计数a[3]从 0 开始并上升到 2。用 -1 减少长度返回最后一个真正存在的索引 (2)。


所以 a[a.length](= a[3]) 导致数组索引越界异常。


查看完整回答
反对 回复 2021-12-01
  • 3 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信