假设我有一个这样的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
conditionb=!b
表示b=true
; - 再次进入循环,并增加
i=3
; - 检查
while
条件b=!b
均值b=fase
并退出while
循环 - 现在来到
SOP
和print
的i
的值,即3
并退出程序
前循环,i = 1
和b = false
.
----------+--------+--------+
Pass | 1 | 2 |
----------+--------+--------+
i | 2 | 3 |
----------+--------+--------+
b | false | true |
----------+--------+--------+
condition | !false | !true | //loop breaks
----------+--------+--------+
这里需要注意两点。b=!b
作为条件检查,即指定b
的补码值,然后检查条件是否满足。我们知道do-while循环至少执行一次,值变为3。