Условный оператор if-else в Java
Условный оператор if позволяет выполнять блок кода только при выполнении условия. Конструкция if-else добавляет альтернативную ветку, а лестница if / else if / else — выбор из нескольких вариантов.
Условие должно иметь тип boolean. В отличие от C/C++, в Java числа и ссылки нельзя напрямую использовать как условие — if (1) или if (obj) приведут к ошибке компиляции. Это делает код более явным и безопасным.
Синтаксис
if (условие) {
// ветка true
} else if (другоеУсловие) {
// ветка
} else {
// ветка по умолчанию
}
Пример 1. Простое if
public class SimpleIf {
public static void main(String[] args) {
int temperature = 35;
if (temperature > 30) {
System.out.println("Жарко!");
}
}
}
Вывод:
Жарко!
Пример 2. if-else
public class IfElse {
public static void main(String[] args) {
int distance = 25; // см
if (distance < 20) {
System.out.println("СТОП: препятствие");
} else {
System.out.println("Движение разрешено");
}
}
}
Вывод:
Движение разрешено
Пример 3. Лестница else if
public class Grade {
public static void main(String[] args) {
int score = 73;
if (score >= 90) {
System.out.println("Отлично");
} else if (score >= 75) {
System.out.println("Хорошо");
} else if (score >= 60) {
System.out.println("Удовлетворительно");
} else {
System.out.println("Неудовлетворительно");
}
}
}
Вывод:
Удовлетворительно
Пример 4. Комбинированные условия
public class Combined {
public static void main(String[] args) {
int hour = 14;
boolean weekend = false;
if (hour >= 9 && hour < 18 && !weekend) {
System.out.println("Рабочее время");
} else {
System.out.println("Нерабочее время");
}
}
}
Вывод:
Рабочее время
Пример 5. Вложенное if
public class Nested {
public static void main(String[] args) {
int light = 600; // 0..1023
boolean motion = true;
if (light < 300) {
if (motion) {
System.out.println("Включить свет");
} else {
System.out.println("Темно, но никого нет");
}
} else {
System.out.println("Достаточно светло");
}
}
}
Вывод:
Достаточно светло
Пример 6. Управление мотором по диапазону
public class MotorControl {
public static void main(String[] args) {
int speed = 180;
String mode;
if (speed == 0) {
mode = "стоп";
} else if (speed < 100) {
mode = "медленно";
} else if (speed < 200) {
mode = "средне";
} else {
mode = "быстро";
}
System.out.println("Скорость " + speed + " -> режим: " + mode);
}
}
Вывод:
Скорость 180 -> режим: средне
Подводные камни
= вместо ==. Внутри условия не путайте присваивание
=и сравнение==. Дляintif (x = 5)не скомпилируется, но дляbooleanif (flag = true)соберётся и станет источником бага.Скобки блока. Опуская
{ }, легко получить логическую ошибку — добавить вторую строку «под if», которая на самом деле выполняется всегда.Сравнение строк. Используйте
str.equals("..."), а не==.==для объектов сравнивает ссылки, а не содержимое.Сравнение float/double. Не сравнивайте дробные числа через
==— учитывайте погрешность:Math.abs(a - b) < 1e-9.
См. также
Примечание
Лицензия и источники
Концепция описана на основе официального Java Tutorial от Oracle (https://docs.oracle.com/javase/tutorial/), Oracle Free Documentation License. Перевод, примеры и пояснения — © AlashEd Wiki.