前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个关于List的IndexOutOfBoundsException异常记录

一个关于List的IndexOutOfBoundsException异常记录

作者头像
翎野君
发布2023-05-12 20:16:26
1910
发布2023-05-12 20:16:26
举报
文章被收录于专栏:翎野君翎野君

一个关于List的IndexOutOfBoundsException异常记录

下面的代码是一个关于List的经典问题,平常工作中,我们对空指针会比较警惕,稍不留意可能就会写出来下面的问题代码。

代码语言:javascript
复制
List<Integer> list = new ArrayList<>();
Integer a = list.get(0);

上面的代码运行之后会报下面的数组越界的异常

代码语言:javascript
复制
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
main
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.get(ArrayList.java:429)
    at com.lingyejun.dating.chap11.thread.MyDemo3.main(MyDemo3.java:17)

根本原因在于new ArrayList<>()的时候创建出来的是一个不包含任何内容的空数组,此时的数组size是0,然后list.get(0)操作时,index>=size,所以就出现了数组越界的异常,在这里小记一下。

拷贝了一部分的源码如下:

代码语言:javascript
复制
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
     
public ArrayList() {
    this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
     
public E get(int index) {
    rangeCheck(index);
 
    return elementData(index);
}
 
private void rangeCheck(int index) {
    if (index >= size)
        throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
 
E elementData(int index) {
    return (E) elementData[index];
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一个关于List的IndexOutOfBoundsException异常记录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档