Условия

Базовый Java
≈ 3 мин чтения

Как программа принимает решения

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

Условие if

В круглых скобках после if должно находиться выражение типа boolean. Если оно даёт true, код внутри блока выполняется. Если false — блок пропускается.

int temperature = 28;

if (temperature > 25) {
    System.out.println("Жарко");
}

Здесь выражение temperature > 25 уже знакомо тебе по операторам. Новая часть — if, который использует результат этого выражения, чтобы решить, выполнять блок или нет.

Java не превращает числа в условия автоматически. Запись if (temperature) не скомпилируется: условие должно иметь значение true или false.

Два варианта: if и else

Когда нужно выбрать один из двух путей, к if добавляют else. Выполнится ровно одна из двух веток.

int balance = 700;
int price = 500;

if (balance >= price) {
    System.out.println("Покупка доступна");
} else {
    System.out.println("Недостаточно средств");
}

Несколько вариантов: else if

Если вариантов больше двух, условия можно проверять по очереди через else if. Java идёт сверху вниз и выполняет первую ветку, условие которой оказалось истинным. Остальные ветки этой цепочки уже не проверяются.

int score = 82;

if (score >= 90) {
    System.out.println("Отлично");
} else if (score >= 75) {
    System.out.println("Хорошо");
} else if (score >= 60) {
    System.out.println("Зачёт");
} else {
    System.out.println("Нужно повторить тему");
}

Порядок здесь важен. Для значения 82 проверка score >= 90 не проходит, следующая проходит — и программа сразу выбирает ветку «Хорошо».

Составные и вложенные условия

Внутри if можно использовать уже знакомые логические операторы, а один условный блок можно поместить внутрь другого. Это полезно, когда вторую проверку имеет смысл делать только после первой.

boolean loggedIn = true;
boolean isAdmin = false;

if (loggedIn) {
    if (isAdmin) {
        System.out.println("Панель администратора");
    } else {
        System.out.println("Личный кабинет");
    }
}

Вложенность лучше не делать слишком глубокой: если блоки начинают уходить далеко вправо, обычно код можно организовать понятнее. К этому мы ещё вернёмся, когда появятся методы.

switch для выбора по одному значению

Цепочка else if удобна для диапазонов и разных логических выражений. Но если один и тот же результат нужно сравнить с несколькими конкретными вариантами, часто нагляднее использовать switch.

int level = 2;

int bonus = switch (level) {
    case 1 -> 100;
    case 2 -> 250;
    case 3 -> 500;
    default -> 0;
};

System.out.println(bonus);

Здесь switch не просто выбирает ветку, а сразу возвращает значение, которое записывается в bonus. Стрелка -> отделяет вариант case от результата, а default обрабатывает все остальные значения.

В старом Java-коде можно встретить другой стиль switch. Там после case ставят двоеточие и часто используют break. Для новых простых конструкций вариант со стрелками обычно легче читать и не допускает случайного перехода в следующий case.

Что выбрать

  • if / else if / else — когда решение строится на произвольных логических выражениях, диапазонах или нескольких разных проверках;
  • switch — когда выбираешь действие или значение по одному результату из нескольких конкретных вариантов.

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