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

为何如下Java代码片段运行后sum值为16?我的推导逻辑错在哪里

Java代码运行结果解释
int sum = 1;
for (int i = 0; i <= 5; sum = sum + i++)
System.out.println(sum);

核心错误原因

你的推导主要混淆了Java for 循环各部分的执行顺序,Java中标准for循环的执行逻辑为:

  1. 先执行初始化语句(for括号内第一部分,全局仅执行一次)
  2. 校验循环条件(第二部分),结果为false则直接退出循环
  3. 条件为true时,先执行循环体代码
  4. 最后执行迭代语句(第三部分)
  5. 回到第2步重新校验循环条件

同时你也搞错了首次迭代时i的取值,后置自增i++会先取i的当前值参与运算,再完成自增。

逐轮执行过程

我们逐次跟踪sum和i的数值变化:

  • 初始状态:sum = 1
  • 首次执行初始化语句:i = 0

  • 第1轮循环校验:0 <=5 成立
    执行循环体:打印sum的值为1
    执行迭代语句:sum = 1 + 0(i当前为0,参与运算后自增为1),此时sum = 1

  • 第2轮循环校验:1 <=5 成立
    执行循环体:打印sum的值为1
    执行迭代语句:sum = 1 + 1(i当前为1,参与运算后自增为2),此时sum = 2

  • 第3轮循环校验:2 <=5 成立
    执行循环体:打印sum的值为2
    执行迭代语句:sum = 2 + 2(i当前为2,参与运算后自增为3),此时sum = 4

  • 第4轮循环校验:3 <=5 成立
    执行循环体:打印sum的值为4
    执行迭代语句:sum = 4 + 3(i当前为3,参与运算后自增为4),此时sum = 7

  • 第5轮循环校验:4 <=5 成立
    执行循环体:打印sum的值为7
    执行迭代语句:sum = 7 + 4(i当前为4,参与运算后自增为5),此时sum = 11

  • 第6轮循环校验:5 <=5 成立
    执行循环体:打印sum的值为11
    执行迭代语句:sum = 11 + 5(i当前为5,参与运算后自增为6),此时sum = 16

  • 第7轮循环校验:6 <=5 不成立,直接退出循环

从数学计算上也可以验证:sum初始值为1,迭代语句一共累加了i从0到5的所有值,0+1+2+3+4+5=15,1+15=16,和运行结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:06:02