Я разместил два примера ниже.
В первом примере я использую оператор равным, и процесс продолжается навсегда, а не прерывается, когда это необходимо.
Во втором примере я использую оператор больше или равен, и процесс прерывается, когда это необходимо.
Как это возможно?
При сравнении двух равных целых чисел в цикле while оператор с равным оператором терпит неудачу?
Пример 1:
Integer myVar1 = 42985;
Integer myVar2 = 1;
while (true)
{
if (myVar2 == myVar1)
{
break;
}
++ myVar2;
}
Пример 2:
Integer myVar1 = 42985;
Integer myVar2 = 1;
while (true)
{
if (myVar2 >= myVar1)
{
break;
}
++ myVar2;
}
EDIT: Спасибо всем за прекрасные ответы! Теперь я полностью понимаю проблему, и эта новая информация объясняет несколько странных поведений, которые я встречал в своих приложениях. Жаль, что я не смог выбрать более одного ответа.
Есть ли случаи, когда я хотел бы использовать оператор '==', или я должен просто прекратить его использовать? Кроме того, как насчет оператора '! ='? Имеет ли тот же недостаток? –
@ EricGlass - как я уже сказал, используйте '.equals() 'и' .compareTo() '. Время * * *, которое вы должны использовать '==' с объектами, - это когда вы явно проверяете идентичность объекта (что, как я считаю, я редко делаю). – parsifal
Спасибо, ответ! –