Что такое оператор условия java
Перейти к содержимому

Что такое оператор условия java

  • автор:

Условные операторы в Java: if-else, switch и «Элвис»

Прокатимся по ключевым операторам выбора в языке программирования Джава, начиная if-else и заканчивая обновлённым switch в Java 12.

Чтобы эффективно работать с условными операторами на языке Java, необходимо знать, какими они бывают и для каких сценариев подходят. Обсудим это и некоторые нововведения из Java 13.

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

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

В качестве примера рассмотрим простое равенство, при истинности которого программа выведет результат:

if(2 * 2 == 4)

Поскольку условие истинно, в выводе программы мы увидим:

Программа выполняется 

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

else в языке Java означает «в ином случае». То есть если условие if не является истинным, выводится то, что в блоке else :

if(2 * 2 == 5) < System.out.println("Программа выполняется"); >else
Условие ошибочно 

Это же сработает и без ключевого слова else , но чтобы код был читабельным и логичным, не следует пренебрегать else , как это сделано в следующем примере:

if(2 * 2 == 5) < System.out.println("Программа выполняется"); >System.out.println("Условие ошибочно"); 

А теперь давайте создадим несколько условий с использованием конструкции if-else . Выглядит это таким образом:

int a = 20; if(a == 10) < System.out.println("a = 10"); >else if(a == 15) < System.out.println("a = 15"); >else if(a == 20) < System.out.println("a = 20"); >else
a = 20 

Как видим, только третье условие истинно, поэтому выводится именно a = 20 , а все остальные блоки игнорируются.

Вложенный if

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

int a = 20; int b = 5; if(a == 20) < System.out.println("a = 20"); if(b == 5)< System.out.println("b = 5"); >> 
a = 20 b = 5 

В результате программа заходит в оба блока и делает два вывода, потому как оба условия истинны.

«Элвис»

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

Само выражение будет выглядеть следующим образом:

int a = 20; int b = 5; String answer = (a > b) ? "Условие верно" : "Условие ошибочно"; System.out.println(answer); 
Условие верно 

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

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

Оператор выбора switch позволяет сравнивать переменную как с одним, так и с несколькими значениями. Общая форма написания выглядит следующим образом:

switch(выражение) < case значение1: // Блок кода 1 break; case значение2: // Блок кода 2 break; case значениеN: // Блок кода N break; default : // Блок кода для default > 

Рассмотрим распространённый пример с днями недели:

public class Main < //Создадим простое перечисление дней недели private static enum DayOTheWeek< MON, TUE, WED, THU, FRI, SAT, SUN >public static void main(String[] args) < //Выбираем понедельник (MON) var dayOfTheWeek= DayOTheWeek.MON; switch (dayOfTheWeek)< case MON: System.out.println("Понедельник"); break; case TUE: System.out.println("Вторник"); break; default: System.out.println("Другой день недели"); >> > 
Понедельник 

break при этом прерывает процесс проверки, поскольку соответствие условия уже найдено. Но начиная с Java 13, вместо break в условном операторе switch правильнее использовать yield — ключевое слово, которое не только завершает проверку, но и возвращает значение блока.

Кроме того, с 12 версии Java конструкция switch-case также претерпела некоторые изменения. Если вы используете в работе IntelliJ IDEA, данная среда разработки сама подскажет, как оптимизировать switch-case под новые версии.

Вот преобразованный код из нашего примера с некоторыми изменениями:

public class Main < private static enum DayOTheWeek< MON, TUE, WED, THU, FRI, SAT, SUN >public static void main(String[] args) < //В этот раз выберем вторник var dayOfTheWeek= DayOTheWeek.TUE; String result = switch (dayOfTheWeek)< case MON ->"Понедельник"; case TUE, WED, THU, FRI -> < yield "Любой будний день, кроме понедельника."; >default -> "Выходной день"; >; System.out.println(result); > > 
Любой будний день, кроме понедельника. 

Задачи на условные операторы Java

Определите, что выведут в консоль следующие примеры, без проверки в компиляторе.

1. В переменной min лежит число от 0 до 59. Определите в какую четверть часа попадает это число (в первую, вторую, третью или четвертую):

int min = 10; if(min >= 0 && min else if(min >= 15 && min else if(min >= 31 && min else

7 практических заданий с собеседования на позицию Junior Java Developer

2. Что выведет следующий код:

int month = 3; String monthString; switch (month) < case 1: monthString = "Январь"; break; case 2: monthString = "Февраль"; break; case 3: monthString = "Март"; break; case 4: monthString = "Апрель"; break; case 5: monthString = "Май"; break; case 6: monthString = "Июнь"; break; case 7: monthString = "Июль"; break; case 8: monthString = "Август"; break; case 9: monthString = "Сентябрь"; break; case 10: monthString = "Октябрь"; break; case 11: monthString = "Ноябрь"; break; case 12: monthString = "Декабрь"; break; default: monthString = "Не знаем такого"; break; >System.out.println(monthString); 

3. Какое значение будет присвоено переменной k :

int i = -10 * -1 + (-2); int k = i < 0 ? -i : i; System.out.println(k);

Пишите свои ответы к задачам по условным операторам в Java.

If-else в Java

В Java оператор ветвления if-else имеет Си-подобный синтаксис: условное выражение заключается в круглые скобки, тело ветки – в фигурные.

if (логич_выражение) < выражение1; выражение2; … >else

Если тело состоит из одного выражения, фигурные скобки можно не использовать.

if (логич_выражение) выражение1; else выражение2;

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

if (…) < … >else if (…) < … >else if (…) < … >else

Простыми логическими операторами являются ==, !=, , >=.

Логические операторы И, ИЛИ, логическое НЕ записываются соответственно &&, ||, !. В Java эти операторы применимы только к булевому типу данных, то есть нельзя писать, например, ! var или a < 3 || var , если var – целое или любой другой отличный от boolean тип. То же самое касается циклов: while ( true ) < >будет работать, while ( 1 ) < >– нет.

При сравнении примитивных типов сравниваются их значения. Так в следующем коде ветка if выполнится:

int a = 3; int b = 3; if (a == b)  System.out.println(1); >

В случае ссылочных типов сравниваются ссылки. Чтобы быть равными, они должны указывать на один и тот же объект.

package info.younglinux.java; public class Logic  public static void main(String[] args)  Message a = new Message("Hello"); Message b = new Message("Hello"); Message c = b; if (a == b)  System.out.println("a == b"); > if (b == c)  System.out.println("b == c"); > > > class Message  private String m = ""; Message(String str)  this.m = str; > String getMessage()  return this.m; > >

В приведенной программе на экран будет выведено только b == c, так как обе переменные указывают на один и тот же объект. В то время как a и b – разные объекты.

В Java есть сокращенный вариант условного оператора для случая, когда есть две ветки – if и else, каждая включает только одно выражение, а результат выражений обоих веток может быть присвоен переменной одного типа. Такой оператор называется тернарным (ternary – тройной).

import java.util.Scanner; public class Ternary  public static void main(String[] args)  Scanner scan = new Scanner(System.in); int a = scan.nextInt(); int b = a > 10 ? a : a + 10; System.out.println(b); > >

В выражении a > 10 ? a : a + 10 ; проверяется условие, стоящее до знака вопроса. Если оно истинно, то переменной b присваивается результат выражения, находящегося между знаками вопроса и двоеточия. Если условие ложно, то присваивается результат выражения, находящегося после двоеточия.

X Скрыть Наверх

Программирование на Java. Курс

Что такое оператор условия java

Одним из фундаментальных элементов многих языков программирования являются условные конструкции . Данные конструкции позволяют направить работу программы по одному из путей в зависимости от определенных условий.

В языке Java используются следующие условные конструкции: if..else и switch..case

Конструкция if/else

Выражение if/else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код:

int num1 = 6; int num2 = 4; if(num1>num2)

После ключевого слова if ставится условие. И если это условие выполняется, то срабатывает код, который помещен в далее в блоке if после фигурных скобок. В качестве условий выступает операция сравнения двух чисел.

Так как, в данном случае первое число больше второго, то выражение num1 > num2 истинно и возвращает значение true . Следовательно, управление переходит в блок кода после фигурных скобок и начинает выполнять содержащиеся там инструкции, а конкретно метод System.out.println("Первое число больше второго"); . Если бы первое число оказалось бы меньше второго или равно ему, то инструкции в блоке if не выполнялись бы.

Но что, если мы захотим, чтобы при несоблюдении условия также выполнялись какие-либо действия? В этом случае мы можем добавить блок else :

int num1 = 6; int num2 = 4; if(num1>num2) < System.out.println("Первое число больше второго"); >else

Но при сравнении чисел мы можем насчитать три состояния: первое число больше второго, первое число меньше второго и числа равны. С помощью выражения else if , мы можем обрабатывать дополнительные условия:

int num1 = 6; int num2 = 8; if(num1>num2) < System.out.println("Первое число больше второго"); >else if(num1 else

Также мы можем соединить сразу несколько условий, используя логические операторы:

int num1 = 8; int num2 = 6; if(num1 > num2 && num1>7)

Здесь блок if будет выполняться, если num1 > num2 равно true и одновременно num1>7 равно true .

Конструкция switch

Конструкция switch/case аналогична конструкции if/else , так как позволяет обработать сразу несколько условий:

int num = 8; switch(num)

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после операторов сase . И если совпадение найдено, то будет выполняет соответствующий блок сase .

В конце блока сase ставится оператор break , чтобы избежать выполнения других блоков. Например, если бы убрали оператор break в следующем случае:

case 8: System.out.println("число равно 8"); num++; case 9: System.out.println("число равно 9"); break;

то выполнился бы блок case 8 , (поскольку переменная num равна 8). Но так как в этом блоке оператор break отсутствует, то начал бы выполняться блок case 9 .

Если мы хотим также обработать ситуацию, когда совпадения не будет найдено, то можно добавить блок default , как в примере выше. Хотя блок default необязателен.

Также мы можем определить одно действие сразу для нескольких блоков case подряд:

int num = 3; int output = 0; switch(num) < case 1: output = 3; break; case 2: case 3: case 4: output = 6; break; case 5: output = 12; break; default: output = 24; >System.out.println(output);

Тернарная операция

Тернарную операция имеет следующий синтаксис: [первый операнд - условие] ? [второй операнд] : [третий операнд] . Таким образом, в этой операции участвуют сразу три операнда. В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true , то возвращается второй операнд; если условие равно false , то третий. Например:

int x=3; int y=2; int z = x
  • Вопросы для самопроверки
  • Упражнения

#6 – Условные конструкции (if-else, switch-case)

#6 – Условные конструкции (if-else, switch-case)

Условные конструкции позволяют выполнить проверку и в зависимости от результата произвести выполнение определенного участка кода. За урок мы научимся использовать конструкцию if-else, а также switch-case в языке Java.

Видеоурок

Условные операторы очень важны, ведь они позволяют выполнять разный код в зависимости от исхода условия. В языке Java существует три конструкции позволяющих осуществлять проверку.

Конструкция if - else

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

int a = 2, b = 10; if (a == b) < // Если a будет равным b, тогда будет выполнен код // Здесь код который будет выполнен // Если все одна строка кода, то фигурные скобки <>// можно не ставить > else if (a else < // Этот код сработает, если другие условия не будет выполнено >

Вы можете прописать структуру лишь с одним условием if , а можете дописать в неё сколько-угодно вложенных условий else if .

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

Если необходимо проверить несколько условий в одном операторе, то можно воспользоваться логическим «и» или же логическим «или»:

if (a != b && a > b) < // Код будет выполнен, если и первое, и второе условие // окажутся верными >if (a < b || a == b) < // Код будет выполнен, если или первое, или второе условие // окажется верным >

Конструкция switch

Конструкция case обладает более удобным форматом для проверки множественных условий на совпадение значения. В конструкцию записывается переменная, что проверяется, а также значения на которые происходит проверка.

int x = 23; switch (x) < // Проверяем переменную x case 1: // Если переменная будет равна 1, то здесь сработает код // Может быть множество строк, а не только одна System.out.print ("Переменная равна 1"); break; // Указываем конец для кода для этой проверки case 56: // Если переменная будет равна 56, то здесь сработает код // Может быть множество строк, а не только одна System.out.print ("Переменная равна 56"); break; // Указываем конец для кода для этой проверки // По аналогии таких проверок может быть множество // Также можно добавить проверку, которая сработает в случае // если все остальные проверки не сработают default: System.out.print ("Что-то другое"); break; // Можно и не ставить, так как это последние условие >

Тернарная операция

Это сокращенная форма if else . Записывается следующим образом:

int x = 3, a = 12; int res = x < a ? (x + a) : (x - a); System.out.println(res);

Мы проверяем, если "x" будет меньше за "a", то мы в переменную res устанавливаем их сумму, иначе - их разницу.

Весь код будет доступен после подписки на проект!

Задание к уроку

Оператор switch case

Создайте условный оператор switch case для проверки числовой переменной.

  • Если переменная равна 3 - выведите в консоль надпись "Три";
  • Переменная равна 7 - выведите надпись "Семь";
  • Для всего остального выведите надпись "Что-то другое".

Посмотреть ответ

Вот код решения подобной задачи:

int a = 11; switch (a)

Получить остальные домашние задания можно после подписки на проект

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Также стоит посмотреть

Java до профи: основы, UI дизайн и Android разработка

Разработка на Android Studio / Приложение E-Commerce

Фреймворк Next JS / Изучение NextJS для начинающих

Разработка игр на Java для начинающих

Курс по React JS для начинающих

Изучение JavaScript: от нуля и до создания сайта

Комментарии (8)

Michael 26 июля 2023 в 23:14

Добрый день! Мне не очень понятно почему автор ролика используют тип данных "int" вместо "char". То есть "int a = 15, b = 10", так как часто используется для работы с символами.

Bruh 30 ноября 2023 в 10:07

Тебе в ролике объяснили что в калькуляторе если не будет этой строчики то все значения которые ты ввел в switch case они игнорятся и срабатывает default который ты прописал в конце switch case. Это происходит потому что переменной действие значения не имее и система обрабатыет пустоту а эту пустоту ты в switch case конечно же не прописывал и о Чудо Ошибка. Поэтому нужна эта строчка. Надеюсь помог и объяснил!

Sponge 18 декабря 2022 в 14:38

А почему сначала нельзя ввести первое число, затем операцию и второе число?

Gantz 14 ноября 2022 в 18:45

Извините, но ответ на задание кажется каким-то неполным.
Если я копирую код, то при исполнении программы сразу выскакивает default, но если дополнить код строкой
int x = scan.nextInt(); то всё срабатывает

User 09 ноября 2022 в 19:07

Объясните, пожалуйста, в Задании к уроку первую строку: int a = 11; - что это? Почему 11?

Gantz 13 ноября 2022 в 21:42

значит, что это любое число, которое не равно 3 и 7. могло быть хоть 100500. Для того, чтобы вывести "Что-то другое" Если бы поставили int а = 3, то первый же кейс подтвердил бы, что число == 3. Надеюсь понятно объяснил..я так это понял

Сергей 23 октября 2022 в 18:34

Свой калькулятор
//здесь мы объявляем переменную и разве знчение не получаем от пользователя
String action = scanner.nextLine();
// зачем нам эта строка?
action = scanner.nextLine();

Gantz 14 ноября 2022 в 18:47

Я тоже ничего не понял из этого блока

itProger 14 ноября 2022 в 18:56

В Джава предпоследние получение данных от пользователя всегда засчитываем еще как значение для последнего получения. Чтобы действительно получить данные от пользователя и указать их в качестве значение для action, то необходимо выполнить доволи глупую вещь – получить данные два раза scanner.nextLine() 🙂

Bruh 30 ноября 2023 в 10:08

Ребята в ролик гляньте эту часть про switch case и поймете что там будет не коректно работать калькулятор.

артем 24 августа 2022 в 21:06

что делать если даже условие не правильное все равно выходит надпись (скобки поставил)?

Валентина 01 июня 2022 в 22:38

Скажите как оплатить подписку из Белоруссии, почтовый ящик [email protected]

itProger 02 июня 2022 в 08:12

Здравствуйте!
Оплата подписки здесь: https://itproger.com/reg. Если возникнут сложности, то напишите консультанту на странице с покупкой.

Dima 16 мая 2022 в 20:34

Очень полезный и крутой курс, очень понятно всё объяснили + практика даёт возможность очень быстро и хорошо всё выучить!
Огромное спасибо!

itProger 16 мая 2022 в 20:49

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *