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

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

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

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

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

class Test { public static void main(String []args) { int a=31, b=15; //if означает “ЕСЛИ”. //Если проговорить код ниже то будет: //”ЕСЛИ а больше чем b то выполняется код в {} после if”. if(a>b) { System.out.println(“a>b returned true”); } //else означает “ИНАЧЕ”. //Если проговорить код ниже то будет: //”ИНАЧЕ выполняется код в {} после else”. //Имеется ввиду ИНАЧЕ от того что было //в круглых скобочках у if. //То есть то что в фигурных скобочках после else //выполняется если выражение a>b вернуло false, //если же a>b вернуло true и был выполнен код //в фигурных скобочках у if то код в фигурных //скобочках у else, очевидно, выполнен не будет. else { System.out.println(“a>b returned false”); } //Выполниться то что в фигурных скобочках //у if так как a>b возвращает true. //То есть, как видим, можно писать блоки кода, //которые выполняются только по какому-то условию. } };

Вывод:

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

class Test { public static void main(String []args) { int a = 31, b = 15; if (a < b) { System.out.println("a < b returned true"); } else { System.out.println("a < b returned false"); } } };

Вывод:

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

class Test { public static void main(String []args) { int a = 31, b = 15; if (a < b) { System.out.println("a < b returned true"); } } };

Вывод:

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

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

class Test { public static void main(String []args) { int a=31, b=15; // Если код в {} после if(a < b) не выполнялся, // то есть a < b возвращает false, if(a < b){ System.out.println("a < b returned true"); } // то выполняется проверка условия в else if ниже // и если a==b возвращает true, то выполняется код // в {} после else if(a==b) и все проверки далее // совершаться не будут, то есть произойдет переход к коду // после проверок, то есть к строчке: // System.out.println("The end of the program"); // Если же a==b возвращает false else if(a==b){ System.out.println("a < b returned false, but a==b " + "returned true"); } // то выполняется проверка условия в else if ниже // и если a>b возвращает true, то выполняется код // в {} после else if(a > b) и все проверки далее // совершаться не будут, то есть произойдет переход к коду // после проверок, то есть к строчке: // System.out.println(“The end of the program”); // Если же a > b возвращает false else if(a > b){ System.out.println(“a < b returned false, a==b " + "returned false, but a > b returned true”); } // то выполняется код в {} после else. else{ System.out.println(“a < b returned false, a==b returned false" + " so lets return something in else block"); } System.out.println("The end of the program"); // Программа выполнит то, // что в фигурных скобках у else if(a>b), // так как a > b возвращает true. } };

Вывод:

Как уже было замечено, если бы, например, 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 аналог, который делает то же самое.

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

class Test { public static void main(String []args) { int a=31, b=15; //если a+b равняется 35 if(a+b==35) { //то выполняется то что здесь System.out.println(“a+b equals to 35”); } //если a+b равняется 46 else if(a+b==46) { //то выполняется то что здесь System.out.println(“a+b equals to 46”); } //если a+b равняется 42 else if(a+b==42) { //то выполняется то что здесь System.out.println(“a+b equals to 42”); } //если все условия выше оказались false else { //то выполняется то что здесь System.out.println(“lets return somethong ” + “in else block”); } } };

Вывод:

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

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

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

class Test { public static void main(String []args) { int a=31, b=15; switch (a+b) { case 35: //если a+b равняется 35 System.out.println(“a+b equals to 35”); break; case 46: System.out.println(“a+b equals to 46”); break; case 42: System.out.println(“a+b equals to 42”); break; default: //default аналог else System.out.println(“lets return somethong in default block”); } } };

Вывод:

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

Search Icon

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

Циклы в Java

Изучите циклы в Java: for, while и do-while. Узнайте различия между ними, синтаксис и практическое применение. Примеры кода с подробными пояснениями работы каждого типа циклов.

Time to read: 10

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

Разберитесь с ключевыми словами break и continue в Java. Узнайте, как досрочно прерывать циклы и пропускать итерации. Практические примеры использования с циклами for и while.

Time to read: 6

Массивы в Java

Изучите массивы в Java: создание, инициализация, работа с элементами через индексы. Обход одномерных и многомерных массивов с помощью циклов for и for-each. Примеры кода и пояснения.

Time to read: 11