У меня есть фрагмент кода, который включает в себя два условия для ввода времени цикла, но я смущен от выхода и ожидаемого результата из следующего кода:во время оценки состояния цикла
while (curr != null && key.compareTo(curr.getKey()) > 0) {
prev = curr;
curr = prev.getNext();
if (curr == null) {
System.out.println(curr + " is null");
}
}
Когда я запустил этот код, Я ожидал, что он выбросит исключение с нулевым указателем, так как curr имеет значение null, и я вызываю метод на null, после того, как сообщение распечатано, однако оно выходит из цикла нормально, и мне было интересно, нормальное поведение? Отсюда кажется, что он оценивает одно условие за раз, но я думал, что в то время как циклы оценивают все внутри скобки в одном булевом выражении?
Я проверил один тест, где я поменял операнды на & & наоборот и обнаружил, что он выбрасывает исключение нулевого указателя! Что является причиной этого?
Q. Выполняется ли условие цикла while в целом или оно оценивает одно условие за раз, прежде чем принимать решение о вводе цикла?
Обратите внимание, что это не что иное, для работы с while-loop. Правила оценки '&&' одинаковы для условия if, присваивания результата булевой переменной и т. Д. –