Топ-100Условные операторы в Java
LogoCodOrbits

Раздел: Азы Java

В этом разделе вы узнаете основы Java: синтаксис, типы данных, операторы и первые шаги в программировании на Java.

Все разделы
Иконка Азы Java

Условные операторы в Java

Last updated: 2 мая 2025 г.

В прошлых уроках мы изучили операторы сравнения и логические операторы. В этом уроке рассмотрим как выражения с операторами можно использовать.

Чаще всего их используют в условных операторах. Например в if...else.

С помощью if...else можно проверить, даёт ли выражение значение true, и если да — выполнить определённые действия.

Поясним на примере.

1class Test
2{
3    public static void main(String []args)
4    {
5        int a=31, b=15;
6        //if означает "ЕСЛИ".
7        //Если проговорить код ниже то будет:
8        //"ЕСЛИ а больше чем b то выполняется код в {} после if".
9        if(a>b)
10        {
11            System.out.println("a>b returned true");
12        }
13        //else означает "ИНАЧЕ".
14        //Если проговорить код ниже то будет:
15        //"ИНАЧЕ выполняется код в {} после else".
16        //Имеется ввиду ИНАЧЕ от того что было
17        //в круглых скобочках у if.
18        //То есть то что в фигурных скобочках после else
19        //выполняется если выражение a>b вернуло false,
20        //если же a>b вернуло true и был выполнен код
21        //в фигурных скобочках у if то код в фигурных
22        //скобочках у else, очевидно, выполнен не будет.
23        else
24        {
25            System.out.println("a>b returned false");
26        }
27        //Выполниться то что в фигурных скобочках
28        //у if так как a>b возвращает true.
29        //То есть, как видим, можно писать блоки кода,
30        //которые выполняются только по какому-то условию.
31    }
32};

Вывод:

В примере if...else оператора ниже, выполниться то, что в фигурных скобочках после else, так как выражение a<b возвращает ложь.

1class Test
2{
3    public static void main(String []args)
4    {
5        int a = 31, b = 15;
6        if (a < b) {
7            System.out.println("a < b returned true");
8        }
9        else {
10            System.out.println("a < b returned false");
11        }
12    }
13};

Вывод:

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

1class Test
2{
3    public static void main(String []args)
4    {
5        int a = 31, b = 15;
6        if (a < b) {
7            System.out.println("a < b returned true");
8        }
9    }
10};

Вывод:

Также есть else if (...) {...}. Его можно писать много раз для дополнительных проверок.

Пример программы:

1class Test
2{
3    public static void main(String []args)
4    {
5        int a=31, b=15;
6        // Если код в {} после if(a < b) не выполнялся,
7        // то есть a < b возвращает false,
8        if(a < b){
9            System.out.println("a < b returned true");
10        }
11        // то выполняется проверка условия в else if ниже
12        // и если a==b возвращает true, то выполняется код
13        // в {} после else if(a==b) и все проверки далее
14        // совершаться не будут, то есть произойдет переход к коду
15        // после проверок, то есть к строчке:
16        // System.out.println("The end of the program");
17        // Если же a==b возвращает false
18        else if(a==b){
19            System.out.println("a < b returned false, but a==b " 
20                               + "returned true");
21        }
22        // то выполняется проверка условия в else if ниже
23        // и если a>b возвращает true, то выполняется код
24        // в {} после else if(a > b) и все проверки далее
25        // совершаться не будут, то есть произойдет переход к коду
26        // после проверок, то есть к строчке:
27        // System.out.println("The end of the program");
28        // Если же a > b возвращает false
29        else if(a > b){
30            System.out.println("a < b returned false, a==b " 
31                               + "returned false, but a > b returned true");
32        }
33        // то выполняется код в {} после else.
34        else{
35            System.out.println("a < b returned false, a==b returned false" 
36                               + " so lets return something in else block");
37        }
38        System.out.println("The end of the program");
39        // Программа выполнит то, 
40        // что в фигурных скобках у else if(a>b),
41        // так как a > b возвращает true.
42    }
43};

Вывод:

Как уже было замечено, если бы, например, a==b возвращал true в программе выше, то все другие проверки else if после else if(a==b) не совершались бы и блок else тоже не выполнился бы.

В этом смысл else if. Если бы вместо всех else if были использованы просто if, и при этом условие a == b оказалось бы истинным, то код в скобочках {} этого условия бы выполнился, но программа дальше бы продолжила проверки условий в if-ах ниже этого условия.

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


Условный оператор switch case

Также часто вместо if…else используют switch case.

Давайте для начала приведем if else версию, а потом ее switch case аналог, который делает то же самое.

Пример программы:

1class Test
2{
3    public static void main(String []args)
4    {
5        int a=31, b=15;
6        //если a+b равняется 35
7        if(a+b==35)
8        {
9            //то выполняется то что здесь
10            System.out.println("a+b equals to 35");
11        }
12        //если a+b равняется 46
13        else if(a+b==46)
14        {
15            //то выполняется то что здесь
16            System.out.println("a+b equals to 46");
17        }
18        //если a+b равняется 42
19        else if(a+b==42)
20        {
21            //то выполняется то что здесь
22            System.out.println("a+b equals to 42");
23        }
24        //если все условия выше оказались false
25        else {
26            //то выполняется то что здесь
27            System.out.println("lets return somethong " + "in else block");
28        }
29    }
30};

Вывод:

Ниже switch case версия, которая выполняет то же самое, что if версия выше.

Поочередно проверяются числа рядом с case-ами на предмет равенства результату выражения в скобочках рядом со switch и если в программе ниже, например, число 42 окажется равным результату выражения a+b, то выполниться код между case 42: и break;.

Пример программы:

1class Test
2{
3    public static void main(String []args)
4    {
5        int a=31, b=15;
6        switch (a+b) {
7            case 35: //если a+b равняется 35
8                System.out.println("a+b equals to 35");
9                break;
10            case 46:
11                System.out.println("a+b equals to 46");
12                break;
13            case 42:
14                System.out.println("a+b equals to 42");
15                break;
16            default: //default аналог else
17                System.out.println("lets return somethong in default block");
18        }
19    }
20};

Вывод:

Конструкция switch-case может быть менее громоздкой по сравнению с if-else в некоторых ситуациях. Она особенно удобна, когда в программе предполагается множество ветвлений вида else if (...). В таких случаях switch-case может быть предпочтительнее и с точки зрения производительности: компилятор может сгенерировать так называемую jump table, что ускоряет выбор нужного варианта.

Search Icon

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


Следующие уроки

Циклы в Java

10
мин.

Similar Articles Icon
Divider

Ключевые слова break, continue

6
мин.

Similar Articles Icon
Divider

Массивы в Java

11
мин.

Similar Articles Icon