While循环布尔值重新赋值



假设我有一个这样的do-while循环:

public class Main {
    public static void main(String[] args) {
        boolean b = false;
        int i = 1;
        do {
            i++;
        } while (b = !b);
        System.out.println(i);
    }
}

什么会导致i增加总数为3 ?我可以理解这个循环将确保它至少运行一次,但在这种情况下,布尔值b被重新赋值为true,这不会导致无限循环吗?

这是你的代码的解释…

  • b=false i=1;初始值
  • 进入循环并增加i=2;
  • check while condition b=!b表示b=true;
  • 再次进入循环,并增加i=3;
  • 检查while条件b=!b均值b=fase并退出while循环
  • 现在来到SOPprinti的值,即3并退出程序

前循环,i = 1b = false .

----------+--------+--------+
Pass      | 1      | 2      |
----------+--------+--------+
i         | 2      | 3      |
----------+--------+--------+
b         | false  | true   |
----------+--------+--------+
condition | !false | !true  | //loop breaks
----------+--------+--------+

这里需要注意两点。b=!b作为条件检查,即指定b的补码值,然后检查条件是否满足。我们知道do-while循环至少执行一次,值变为3。

最新更新