Условные операторы if и if-else в Java - Вопросы
Всего: 5 вопросов
1. В чём разница между операторами if и if-else в Java?
В чём разница между операторами if и if-else в Java?
Оператор if выполняет свой блок только когда условие истинно; если условие ложно, не выполняется ничего. Оператор if-else всегда выполняет ровно один из двух блоков: блок if, если условие true, либо блок else, если условие false.
2. Как работает лесенка if-else-if и в какой момент она перестаёт проверять условия?
Как работает лесенка if-else-if и в какой момент она перестаёт проверять условия?
Условия проверяются сверху вниз. Как только одно из них оказывается истинным, выполняется его блок, а все оставшиеся else if и завершающий else уже не проверяются. Если ни одно условие не истинно, выполняется блок else — при условии, что он есть.
3. Почему рекомендуется всегда ставить фигурные скобки {} в ветках if, даже если в ветке всего одна команда?
Почему рекомендуется всегда ставить фигурные скобки {} в ветках if, даже если в ветке всего одна команда?
Скобки необязательны для одной команды, и код скомпилируется. Но без них ветка управляет только первой командой: если позже дописать вторую строку, она незаметно окажется вне if и будет выполняться всегда. Соглашения Oracle по оформлению кода рекомендуют ставить скобки всегда, чтобы избежать таких скрытых ошибок.
4. Что произойдёт, если поставить точку с запятой сразу после условия: if (a > 5);?
Что произойдёт, если поставить точку с запятой сразу после условия: if (a > 5);?
Код скомпилируется, но точка с запятой — это пустая команда, которая и становится телом if. Поэтому условие ни на что не влияет, а идущий следом блок кода выполнится в любом случае, независимо от значения a. Это частая и трудноуловимая ошибка.
5. Чем лесенка if-else-if отличается от оператора switch и когда выбирать каждый из них?
Чем лесенка if-else-if отличается от оператора switch и когда выбирать каждый из них?
Лесенка if-else-if проверяет любые логические условия, включая диапазоны вроде x > 10 и вызовы методов. Оператор switch сравнивает одно значение с константами и обычно читается легче, когда все ветки проверяют одну и ту же переменную на равенство. Для сложных условий выбирайте if-else-if, для сравнения одной переменной с набором констант — switch.