Условный оператор 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 -> режим: средне

Подводные камни

  • = вместо ==. Внутри условия не путайте присваивание = и сравнение ==. Для int if (x = 5) не скомпилируется, но для boolean if (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.