Рассмотрим этот простой код:Почему эта причина бесконечный цикл
// 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 этого не делает.
Вы знаете, как использовать dubugger? Это отличный инструмент, который поможет вам понять, как работает этот код. –
http://stackoverflow.com/questions/3831341/why-does-this-go-into-an-infinite-loop?rq=1 – fastcodejava
Возможный дубликат [Есть ли разница между x ++ и ++ x в java? ] (HTTP: // StackOverflow.com/questions/1094872/is-there-a-difference-between-x-and-x-in-java) – nawfal