为什么这段Java代码没有抛出ArrayIndexOutOfBoundsException异常?
Java数组越界未触发原因解答
你对for循环的执行逻辑判断有误,这段代码全程不会访问到索引为5的数组元素,因此不会抛出ArrayIndexOutOfBoundsException异常,具体原因如下:
Java中for(int i = 0; i < 5; i++)的执行顺序为:
- 初始化循环变量
i=0 - 判断条件
i < 5是否成立:成立则进入循环体,不成立直接跳出循环 - 执行循环体内的代码
- 执行
i++对循环变量自增,回到条件判断步骤重复执行
整个循环的执行过程中,进入循环体时i的取值依次为0、1、2、3、4,访问的数组索引也对应在0~4的合法范围内。当i自增到5时,会直接判定i < 5不成立跳出循环,不会进入循环体执行数组访问逻辑,自然不会触发越界异常。
如果你想复现越界场景,只需要把循环条件修改为i <= 5即可。
内容的提问来源于stack exchange,提问作者Karl
相关产品推荐
相关产品推荐

