You need to enable JavaScript to run this app. Java中判断条件为真的for循环仅输出0,是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

Java中判断条件为真的for循环仅输出0,是什么原因?

原因分析

你给出的代码如下:

boolean a = false;
for (int i = 0; a = !a ;) {
    System.out.println(i++);
}

输出只有0是因为for循环的执行规则和赋值表达式的特性共同作用导致的,完整执行逻辑如下:

  • 首先执行for循环的初始化语句:声明整型变量i,初始值为0。
  • 第一次判断循环条件:条件位置的a = !a是赋值表达式,不是相等判断(相等判断应该用==),执行时会先计算!a的值,再把结果赋值给a,整个表达式的返回值就是赋值后a的值。初始a为false,所以!a是true,赋值后a变为true,表达式返回true,满足循环进入条件,执行循环体。
  • 循环体内执行System.out.println(i++):i++是后自增运算符,会先返回i的当前值0完成打印,再把i的值更新为1。
  • 循环体执行结束后,因为for循环第三个位置的迭代更新语句为空,没有任何操作,直接进入下一轮条件判断。
  • 第二次判断循环条件a = !a:此时a是true,!a为false,赋值后a变为false,表达式返回false,循环直接终止,不会再执行循环体。

你误以为循环条件恒真,大概率是把这里的=当成了==,如果是a == !a这个条件本身就恒为假,循环一次都不会跑,和当前代码逻辑完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 08:39:03