Ell*_*ott 5 java post-increment
考虑这个简单的代码:
// E1
public void doTest(String pattern) {
int counter = 0;
while (counter < 3) {
counter = counter++;
}
System.out.println("Done");
}
Run Code Online (Sandbox Code Playgroud)
这会导致无限循环.
但是,如果增加计数器的语句是这样写的:
E2. counter = ++counter;
Run Code Online (Sandbox Code Playgroud)
或这个
E3. counter++;
Run Code Online (Sandbox Code Playgroud)
它正常终止.我理解增量发生在失败的版本中的赋值之后,这解释了为什么E2工作,但我认为java分配了变量的增量结果,如E3中那样递增.所以我很困惑为什么E1失败但E3没有.
Roh*_*ain 17
counter = counter++;
Run Code Online (Sandbox Code Playgroud)
上面的代码没有效果counter.它实际上与:
int temp = counter;
counter++;
counter = temp;
Run Code Online (Sandbox Code Playgroud)
所以,价值counter根本没有变化.
另一方面,如果您使用:
counter = ++counter;
Run Code Online (Sandbox Code Playgroud)
计数器首先递增,然后重新分配给计数器.基本上,你可以简单地忽略赋值部分,并保持简单:
counter++; // Or ++counter
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |