Статьи

Полный курс по языку Java — от установки JDK до многопоточности и HTTP-запросов

Условия

Страница 9 из 30 · 2026-10-25 · 3 мин чтения

if, else if, else

public class Grades {    public static void main(String[] args) {        int score = 78;        if (score >= 90) {            System.out.println("Отлично");        } else if (score >= 75) {            System.out.println("Хорошо");        } else if (score >= 50) {            System.out.println("Удовлетворительно");        } else {            System.out.println("Неудовлетворительно");        }    }}

Условие должно иметь тип boolean. Конструкции вида if (x) для числа в Java не работают.

Если в блоке одна инструкция, скобки можно опустить, но лучше их оставлять.

Вложенные условия

public class Nested {    public static void main(String[] args) {        int age = 25;        boolean hasLicense = true;        if (age >= 18) {            if (hasLicense) {                System.out.println("Можно водить");            } else {                System.out.println("Нужны права");            }        } else {            System.out.println("Слишком молод");        }    }}

Читаемее объединить условия через && или использовать ранний выход.

Сравнение строк

public class StringCompare {    public static void main(String[] args) {        String answer = "да";        if (answer.equals("да")) {            System.out.println("Согласие");        }        if (answer.equalsIgnoreCase("ДА")) {            System.out.println("Согласие без учета регистра");        }    }}

Классический switch

public class OldSwitch {    public static void main(String[] args) {        int day = 3;        switch (day) {            case 1:                System.out.println("Понедельник");                break;            case 2:                System.out.println("Вторник");                break;            case 3:                System.out.println("Среда");                break;            default:                System.out.println("Другой день");        }    }}

Без break выполнение «проваливается» в следующую ветку.

Современный switch

С Java 14 доступна стрелочная форма без проваливания:

public class NewSwitch {    public static void main(String[] args) {        int day = 6;        switch (day) {            case 1, 2, 3, 4, 5 -> System.out.println("Будний день");            case 6, 7 -> System.out.println("Выходной");            default -> System.out.println("Нет такого дня");        }    }}

switch как выражение

switch может возвращать значение:

public class SwitchExpression {    public static void main(String[] args) {        String month = "FEBRUARY";        int days = switch (month) {            case "JANUARY", "MARCH", "MAY", "JULY", "AUGUST", "OCTOBER", "DECEMBER" -> 31;            case "APRIL", "JUNE", "SEPTEMBER", "NOVEMBER" -> 30;            case "FEBRUARY" -> 28;            default -> throw new IllegalArgumentException("Неизвестный месяц: " + month);        };        System.out.println(days);    }}

Для нескольких инструкций в ветке используйте блок и yield:

public class SwitchYield {    public static void main(String[] args) {        int score = 85;        String grade = switch (score / 10) {            case 10, 9 -> "A";            case 8 -> {                String result = "B";                yield result;            }            case 7 -> "C";            default -> "F";        };        System.out.println(grade);    }}

Что можно использовать в switch

byte, short, char, int, их обертки, String, enum. Начиная с Java 21 — и произвольные объекты с шаблонами.

Pattern matching для instanceof

public class PatternInstanceof {    public static void main(String[] args) {        Object value = "Привет";        if (value instanceof String text && text.length() > 3) {            System.out.println(text.toUpperCase());        }    }}

Переменная text объявляется прямо в условии.

Pattern matching в switch (Java 21)

public class PatternSwitch {    static String describe(Object obj) {        return switch (obj) {            case null -> "null";            case Integer i when i > 100 -> "большое число " + i;            case Integer i -> "число " + i;            case String s -> "строка длиной " + s.length();            default -> "что-то другое";        };    }    public static void main(String[] args) {        System.out.println(describe(5));        System.out.println(describe(500));        System.out.println(describe("abc"));        System.out.println(describe(2.5));    }}

Ключевое слово when добавляет дополнительное условие к шаблону.