gpt4 book ai didi

java - 为什么这会导致无限循环

转载 作者:搜寻专家 更新时间:2023-10-31 08:09:04 24 4
gpt4 key购买 nike

考虑这个简单的代码:

 // 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 没有失败感到困惑。

最佳答案

counter = counter++;

以上代码对counter没有影响。它实际上与:

int temp = counter;
counter++;
counter = temp;

因此,counter 的值根本没有改变。

另一方面,如果您使用:

counter = ++counter;

计数器先递增,然后重新赋值给counter。本质上,您可以简单地忽略赋值部分,并保持简单:

counter++; // Or ++counter

关于java - 为什么这会导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17223730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com