一个关于List的IndexOutOfBoundsException异常记录
下面的代码是一个关于List的经典问题,平常工作中,我们对空指针会比较警惕,稍不留意可能就会写出来下面的问题代码。
1 2 | List<Integer> list = new ArrayList<>(); Integer a = list.get( 0 ); |
上面的代码运行之后会报下面的数组越界的异常
1 2 3 4 5 | 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,所以就出现了数组越界的异常,在这里小记一下。
拷贝了一部分的源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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]; } |
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2017-09-24 jar包