考虑下面这段简单的代码:
// E1
public void doTest(String pattern) {
int counter = 0;
while (counter < 3) {
counter = counter++;
}
System.out.println("Done");
}
这会导致一个无限循环。
然而,如果增加计数器的语句写成这样:
E2. counter = ++counter;
或者这样
E3. counter++;
程序正常结束。我知道在版本失败的情况下增量发生在赋值之后,这解释了为什么E2可行,但我认为Java将增量的结果分配给被增量的变量,如E3所示。因此,我对为什么E1失败而E3不失败感到困惑。