You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数组元素自增操作两段for循环输出差异问题咨询

问题原因分析

核心原因是两个点的叠加:

  • 后置自增运算符i++的特性是先返回变量当前值,再对变量执行+1操作
  • for循环的增量语句和循环体内部的i++会在每次迭代中给i累计加2,步长为2自然只会访问偶数下标

第二个for循环执行流程拆解

我们先明确Java中for循环的标准执行顺序:

  1. 执行初始化语句int i = 0(仅首次循环执行一次)
  2. 判断条件i < arrayExample.length,结果为true才执行循环体,为false直接终止循环
  3. 执行循环体代码
  4. 执行for循环自带的增量语句i++,回到第2步重新判断条件

数组长度为5,下标范围0~4,第二个循环的完整执行过程如下:

迭代次数进入循环时i的值条件判断结果循环体arrayExample[i++]++执行逻辑循环体执行后i的值执行for增量i++后i的值被修改的数组下标
100<5 → true先取i当前值0作为下标,给下标0元素自增,再给i+1120
222<5 → true先取i当前值2作为下标,给下标2元素自增,再给i+1342
344<5 → true先取i当前值4作为下标,给下标4元素自增,再给i+1564
466<5 → false不执行--无

整个过程中只有下标0、2、4的元素被访问修改,下标1、3从未被循环体触碰,所以值保持不变。


认知误区说明

你之所以会误以为会修改下标1、3的元素,大概率是混淆了前置自增++i和后置自增i++的逻辑,或是忽略了for循环本身自带一次i++增量:如果循环体里写的是arrayExample[++i]++,那就会先给i加1再取下标,此时修改的就是下标1、3的元素,还会因为i最后越界抛出ArrayIndexOutOfBoundsException异常。

内容的提问来源于stack exchange,提问作者Aleksandar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:54:00