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

Java循环中自增变量值不符预期:为何x最终为10而非9?

为什么这段Java代码输出10而不是9?

嘿,这个问题其实是很多刚接触Java循环的开发者容易踩的小坑,我来给你拆解清楚~

首先先把你的代码贴出来,方便我们分析:

int x;
for(x=1;x<10;x++); 
System.out.println(x);

你忽略的核心知识点:for循环的执行流程 + 空循环体的影响

我们先把for循环的执行步骤掰碎了说:

  • 第一步:执行初始化语句 x=1,这一步只会在循环开始时执行一次
  • 第二步:判断循环条件 x<10:
    • 如果条件为true,执行循环体,然后执行迭代语句 x++,再回到第二步重新判断
    • 如果条件为false,直接跳出循环,不再执行循环体和迭代语句

现在看你的代码:

  • 循环体是那个单独的分号;——这是一个空语句,意味着每次循环什么都不做,只是走完流程
  • 我们一步步模拟执行:
    1. x初始化为1,判断1<10成立,执行空循环体,然后x变成2
    2. x=2,判断2<10成立,执行空循环体,x变成3
      ...
      n. x=9,判断9<10成立,执行空循环体,x变成10
      n+1. x=10,判断10<10不成立,跳出循环
  • 最后执行System.out.println(x),自然输出10

补充验证:如果去掉分号会怎样?

如果把代码改成这样(去掉循环后的分号):

int x;
for(x=1;x<10;x++)
    System.out.println(x);
System.out.println("循环结束后x的值:" + x);

这时候循环体是System.out.println(x),会输出1到9,而循环结束后x的值依然是10——这也能印证:迭代语句x++是在循环体执行完之后才会执行的,当x=9时,执行完循环体(输出9),然后x变成10,再判断条件不成立,循环结束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:06:49