取得数组下标_深入学习Java|List下标越界源码分析

本文主要探讨数组与ArrayList的下标越界异常。数组在容量范围内取值不抛异常,超出则抛ArrayIndexOutOfBoundsException;ArrayList初始化容量后,取无元素下标会抛IndexOutOfBoundsException,get(-1)会抛ArrayIndexOutOfBoundsException,查看其源码能更好理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一直认为只有数组才会出现ArrayIndexOutOfBoundsException数组下标越界异常,而ArrayList就算为空,ArrayList.get(0)也是会返回null。今天忽然发现,ArrayList也会抛越界异常IndexOutOfBoundsException,细心的同学可能发现这两个异常还是有区别的。

1d1497f0746621f0f636a6c9e518e030.png

ArrayList下标越界异常

特意测试了一下数组与ArrayList,并记录下来:

1.数组在它的容量范围内,取值不会抛异常,返回null,只有不在容量分为内取值才会抛越界异常ArrayIndexOutOfBoundsException。

05a7bbbd2e2d60dc20ae4040f6cad091.png

数组在它的容量范围内,取值不会抛异常

bf5a0c940db627f12b39300f1b1df291.png

数组下标越界异常

2.ArrayList就算初始化了容量,但当取得下标没有元素时也会抛异常IndexOutOfBoundsException。当我们查看ArrayList的get方法时会发现,当获取的下标大于或等于size,则会抛出IndexOutOfBoundsException异常。

e432cbe59132e3172f38c3a24401982f.png

ArrayList的get方法源码

62601f9925a5e531e8af26575f8342fa.png

下标大于或等于size,抛出异常

3.ArrayList中维护着一个数组,如果不是这里限制了,应该是跟数组一样,在它的容量范围内,取值不会抛异常。

24d018cac66542255b3a84d4ea8b36fc.png

ArrayList中维护着一个数组

fdf7a9334cb4ba457b4bbf59e3c10a6a.png

ArrayList的get方法源码

b4c20789a12d53c33b06f29c5bc0354e.png

ArrayList的get方法最终是数组取值

4.ArrayList.get(-1)不会触发前面的IndexOutOfBoundsException异常,但是也不在数组容量范围内,会抛出了跟数组下标越界一样的异常ArrayIndexOutOfBoundsException。

1c9d78c0bcbb1c031aea26064276e886.png

ArrayList.get(-1)

有时候,看看源码也蛮有意思的。如果有什么不对的地方还望指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值