Условия и циклы ·
‹ Previous Next ›
⏱ 5 min read Modified: 2026-07-12

Условные операторы if и if-else в Java

Условный оператор if — самый используемый оператор ветвления в Java: без него сложно написать хоть сколько-нибудь полезную программу. Он направляет выполнение программы по одной из двух (или нескольких) ветвей в зависимости от того, истинно условие или ложно.

Оператор if в Java

Общая форма записи оператора if:

if (booleanExpression) {
    System.out.println("In the if block");
}

Выражение booleanExpression должно возвращать логическое значение типа boolean или Boolean — например, результат сравнения. Если оно равно true, выполняется блок кода в фигурных скобках. Если false — блок пропускается, и выполнение продолжается после закрывающей скобки.

Следующий пример демонстрирует использование оператора if:

public class IfExample {
    public static void main(String[] args) {
        int a = 1;
        if (a < 10) {
            System.out.println("In the if block");
        }
    }
}

Оператор if-else

У оператора if есть вторая форма — с блоком else. Если booleanExpression возвращает false, выполняется блок кода, записанный после else:

if (booleanExpression) {
    System.out.println("Inside if block");
} else {
    System.out.println("Inside else block");
}

Следующий пример показывает оператор if-else в действии:

public class IfElseExample {
    public static void main(String[] args) {
        int a = 1;
        if (a == 10) {
            System.out.println("In the if block");
        } else {
            System.out.println("In the else block");
        }
    }
}

Блок кода после if и после else может содержать несколько команд.

Важно

Фигурные скобки необязательны, если ветка состоит ровно из одной команды, — такой код скомпилируется. Однако соглашения Oracle по оформлению кода рекомендуют ставить скобки всегда: это защищает от незаметных ошибок, когда в ветку позже дописывают вторую строку.

Лесенка if-else-if

Форма if-else-if — частный случай конструкции if-else. У оператора if может быть ноль или несколько блоков else if, которые должны идти перед необязательным завершающим else. Условия проверяются сверху вниз: как только одно из них оказывается истинным, выполняется его блок, а оставшиеся else if и else уже не проверяются.

Рассмотрим на примере определения времени года: условия внутри каждой ветки объединены логическим оператором || (ИЛИ):

public class IfElseExample1 {
    public static void main(String[] args) {
        int month = 4; // April
        String season;
        if (month == 12 || month == 1 || month == 2) {
            season = "Winter";
        } else if (month == 3 || month == 4 || month == 5) {
            season = "Spring";
        } else if (month == 6 || month == 7 || month == 8) {
            season = "Summer";
        } else if (month == 9 || month == 10 || month == 11) {
            season = "Autumn";
        } else {
            season = "Not a Month";
        }
        System.out.println("April is in the " + season + ".");
    }
}

Результат выполнения кода:

April is in the Spring.

Какую форму выбрать

Форма Структура Когда использовать
if Одно условие, один блок Выполнить код только при истинном условии; иначе не делать ничего
if-else Одно условие, две ветки Выбрать одну из ровно двух альтернатив
if-else-if Несколько условий, проверяемых сверху вниз Выбрать одну ветку из многих по разным условиям
switch Одно значение сравнивается с константами Много веток, каждая из которых сравнивает одну и ту же переменную с константой

Есть и краткая запись: когда if-else лишь выбирает одно из двух значений, его можно заменить тернарным оператором ?: — например, int max = (a > b) ? a : b; вместо четырёх строк if-else.

На чём чаще всего ошибаются

  • Точка с запятой сразу после условия: if (a > 5); компилируется, но точка с запятой — это пустая команда, и блок ниже выполнится в любом случае.
  • Пропуск фигурных скобок у однострочной ветки: при добавлении второй строки она незаметно оказывается вне ветки. Всегда ставьте {}.
  • Сравнение объектов через ==: для String и других объектов в условиях используйте equals(); оператор == сравнивает ссылки.
  • Boolean со значением null: если в условии стоит обёртка Boolean, равная null, при распаковке будет выброшено NullPointerException.

Освоив if, if-else и лесенку if-else-if, вы получаете полный контроль над ходом выполнения ваших программ на Java.

Часто задаваемые вопросы

Существует ли краткая запись if-else в Java?

Да — тернарный оператор ?:. Запись int max = (a > b) ? a : b; заменяет четыре строки if-else, когда каждая ветка лишь возвращает значение. Для веток с несколькими командами или побочными действиями используйте обычный if-else — так читаемее.

Как объединить несколько условий в одном if?

Логическими операторами: && — «И» (обе части истинны), || — «ИЛИ» (хотя бы одна истинна), ! — отрицание. Например: if (age >= 18 && hasTicket). Операторы && и || ленивые: правая часть не вычисляется, если результат уже ясен по левой.

Чем лесенка if-else-if отличается от switch?

Лесенка if-else-if проверяет любые логические условия, включая диапазоны вроде x > 10 и вызовы методов. Оператор switch сравнивает одно значение с константами и обычно читается легче, когда все ветки проверяют одну и ту же переменную на равенство.

Почему if (x = 5) не компилируется в Java?

Потому что = — это присваивание, а не сравнение. Выражение x = 5 имеет тип int, а условие в if должно быть типа boolean, поэтому компилятор выдаст ошибку. С логическими переменными осторожнее: if (flag = true) компилируется — присваивает true, и условие всегда истинно. Для сравнения используйте == или просто if (flag).

Презентация с видео на Patreon →

Video Explanation

Prefer video format? Watch this lesson with examples and explanations.

Comments

TTereshchenko May 20, 2021
1. If в Java Рассмотрим общую форму написания оператора if. Выражение booleanExpression до --думаю предполагалось что форма отразилась. В тексте же сразу идет разъяснение по по параметрам. Или я ошибаюсь и так и было задумано
May 20, 2021
Переставила форму в нужное место.
recode Aug 12, 2021
После прохождения теста добавьте ссылку для возврата обратно к теме или списку тем, приходится много раз наживать назад, чтобы вернуться обратно
Aug 13, 2021
Спасибо за отзыв! Постараемся учесть все комментарии.

Please log in or register to have a possibility to add comment.