Java While循环布尔重分配
假设我有这样一个do while循环:Java While循环布尔重分配,java,Java,假设我有这样一个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总共增加三个?我可以理解这个循环将
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
总共增加三个?我可以理解这个循环将确保它至少运行一次,但在这种情况下,布尔值b
被重新分配为true,这不会导致无限循环吗?下面是对代码的解释
b的初始值=false i=1代码>
- 在循环中输入并递增
李>i=2
- 检查
条件while
表示b=!b
李>b=true
- 再次转到循环并递增
李>i=3
- 检查
条件while
平均值b=!b
并退出b=fase
循环while
- 现在转到
和SOP
print
的值,即i
并退出程序3
- 这里需要注意两件事<代码>b=!b作为条件检查意味着分配
b
的补码值,然后检查条件满足情况。正如我们所知,当循环至少执行一次时,值变为三 在循环之前,i=1
和b=false
----------+--------+--------+
Pass | 1 | 2 |
----------+--------+--------+
i | 2 | 3 |
----------+--------+--------+
b | false | true |
----------+--------+--------+
condition | !false | !true | //loop breaks
----------+--------+--------+
b=!b
将b
翻转到相反方向,不管它是什么。第一次,b
以false
开头,因此它被重新分配到true
。第二次,b
以true
开始,因此它被重新分配到false
,然后循环退出。我希望这是一个测试您对Java理解的练习。在现实生活中,永远不要编写这样的代码,将布尔变量的赋值加倍作为一个条件。很难理解。是的,这是一个练习题。谢谢你的解释,我没有看到另一篇文章会被翻回false,像这样的例子理解起来会非常令人沮丧。我很感激@ajb有什么特别的理由不把它作为答案发布吗?@BenKnoble可能只是一个偏好,如果我不想提供更深入的解释,就不发布真正简短的答案…@ajb公平。另外,在通用电气低代表联盟中,我想这一点也没有那么重要