- Условные конструкции — Основы Java
- Конструкция if
- Конструкция if-else
- Конструкция else if
- Тернарный оператор
- Остались вопросы? Задайте их в разделе «Обсуждение»
- Открыть доступ
- Java как работает if else
- Конструкция if/else
- Конструкция switch
- Тернарная операция
- Java If . Else
- The if Statement
- Syntax
- Example
- Example
- Example explained
- The else Statement
- Syntax
- Example
- Example explained
- The else if Statement
- Syntax
- Example
- Example explained
Условные конструкции — Основы Java
Условные конструкции позволяют выполнять разный код, основываясь на логических проверках. Посмотрим на таком типичном примере:
- Человек хочет оплатить покупку с карты
- Если на счету есть деньги, то нужная сумма спишется автоматически
- Если денег нет, то операция будет отклонена
Конструкция if
Для примера напишем метод, который определяет тип переданного предложения. Для начала он будет отличать обычные предложения от вопросительных:
public static String getTypeOfSentence(String sentence) if (sentence.endsWith("?")) return "question"; > return "general"; > App.getTypeOfSentence("Hodor"); // "general" App.getTypeOfSentence("Hodor?"); // "question"
if — конструкция языка, управляющая порядком инструкций. В скобках ей передается логическое выражение, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если условие выполняется.
Если условие не выполняется, то блок кода в фигурных скобках пропускается, и метод продолжает свое выполнение дальше. В нашем случае следующая строчка кода — return «general»; — заставит метод вернуть строку и завершиться.
Конструкция if-else
Условная конструкция if имеет несколько разновидностей. Одна разновидность включает в себя блок, который выполняется, если условие ложно:
if (x > 5) // Если условие true > else // Если условие false >
Такая структура может понадобиться при начальной инициализации значения. В примере ниже проверяется наличие email . Если он отсутствует, то устанавливаем значение по умолчанию, если его передали, то выполняем нормализацию:
// Здесь приходит email if (email.equals("")) // Если email пустой, то ставим дефолт email = "support@hexlet.io"; > else // Иначе выполняем нормализацию email = email.trim().toLowerCase(); > // Здесь используем эту почту
Если ветка if содержит return , то else становится не нужен — его можно просто опустить:
if (/* условие */) return /* какое-то значение */; > // Продолжаем что-то делать, потому что else не нужен
Конструкция else if
В самой полной версии конструкция if содержит не только ветку else , но и другие условные проверки с помощью else if . Такой вариант используется при большом количестве проверок, которые взаимоисключают друг друга:
if (/* что-то */) > else if (/* другая проверка */) > else if (/* другая проверка */) > else >
Здесь стоит обратить внимание на два момента:
Напишем для примера расширенный метод определяющий тип предложения. Он распознает три вида предложений:
App.getTypeOfSentence("Who?"); // "Sentence is question" App.getTypeOfSentence("No"); // "Sentence is general" App.getTypeOfSentence("No!"); // "Sentence is exclamation" public static String getTypeOfSentence(String sentence) var sentenceType = ""; if (sentence.endsWith("?")) sentenceType = "question"; > else if (sentence.endsWith("!")) sentenceType = "exclamation"; > else sentenceType = "general"; > return "Sentence is " + sentenceType; >
Теперь все условия выстроены в единую конструкцию. Оператор else if — это «если не выполнено предыдущее условие, но выполнено текущее». Получается такая схема:
- Если последний символ ? , то «question»
- Иначе, если последний символ ! , то «exclamation»
- Иначе «general»
В итоге выполнится только один из блоков кода, относящихся ко всей конструкции if .
Тернарный оператор
Посмотрите на определение метода, который возвращает модуль переданного числа:
// Если больше нуля, то выдаем само число. Если меньше, то убираем знак public static int abs(int number) if (number >= 0) return number; > return -number; > App.abs(10); // 10 App.abs(-10); // 10
В Java существует конструкция, которая по своему действию аналогична конструкции if-else, но при этом является выражением. Она называется тернарный оператор.
Тернарный оператор — единственный в своем роде оператор, требующий три операнда. Он помогает писать меньше кода для простых условных выражений. Наш пример выше с тернарным оператором превращается в три строки кода:
public static int abs(int number) return number >= 0 ? number : -number; >
Общий шаблон выглядит так:
predicate> ? expression on true> : expression on false>
То есть сначала мы записываем логическое выражение, а дальше два разных варианта поведения:
- Если условие истинно, выполняет вариант до двоеточия
- Если условие ложно, выполняет вариант после двоеточия
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Java как работает if else
Одним из фундаментальных элементов многих языков программирования являются условные конструкции . Данные конструкции позволяют направить работу программы по одному из путей в зависимости от определенных условий.
В языке 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
Также мы можем соединить сразу несколько условий, используя логические операторы:
int num1 = 8; int num2 = 6; if(num1 > num2 && num1>7)
Здесь блок if будет выполняться, если num1 > num2 равно true и одновременно num1>7 равно true .
Конструкция switch
Конструкция switch/case аналогична конструкции if/else , так как позволяет обработать сразу несколько условий:
После ключевого слова 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 , то третий. Например:
Java If . Else
You already know that Java supports the usual logical conditions from mathematics:
- Less than: a < b
- Less than or equal to: a
- Greater than: a > b
- Greater than or equal to: a >= b
- Equal to a == b
- Not Equal to: a != b
You can use these conditions to perform different actions for different decisions.
Java has the following conditional statements:
- Use if to specify a block of code to be executed, if a specified condition is true
- Use else to specify a block of code to be executed, if the same condition is false
- Use else if to specify a new condition to test, if the first condition is false
- Use switch to specify many alternative blocks of code to be executed
The if Statement
Use the if statement to specify a block of Java code to be executed if a condition is true .
Syntax
if (condition) < // block of code to be executed if the condition is true >
Note that if is in lowercase letters. Uppercase letters (If or IF) will generate an error.
In the example below, we test two values to find out if 20 is greater than 18. If the condition is true , print some text:
Example
We can also test variables:
Example
int x = 20; int y = 18; if (x > y)
Example explained
In the example above we use two variables, x and y, to test whether x is greater than y (using the > operator). As x is 20, and y is 18, and we know that 20 is greater than 18, we print to the screen that «x is greater than y».
The else Statement
Use the else statement to specify a block of code to be executed if the condition is false .
Syntax
if (condition) < // block of code to be executed if the condition is true > else < // block of code to be executed if the condition is false >
Example
int time = 20; if (time < 18) < System.out.println("Good day."); >else < System.out.println("Good evening."); >// Outputs "Good evening."
Example explained
In the example above, time (20) is greater than 18, so the condition is false . Because of this, we move on to the else condition and print to the screen «Good evening». If the time was less than 18, the program would print «Good day».
The else if Statement
Use the else if statement to specify a new condition if the first condition is false .
Syntax
if (condition1) < // block of code to be executed if condition1 is true > else if (condition2) < // block of code to be executed if the condition1 is false and condition2 is true > else < // block of code to be executed if the condition1 is false and condition2 is false >
Example
int time = 22; if (time < 10) < System.out.println("Good morning."); >else if (time < 18) < System.out.println("Good day."); >else < System.out.println("Good evening."); >// Outputs "Good evening."
Example explained
In the example above, time (22) is greater than 10, so the first condition is false . The next condition, in the else if statement, is also false , so we move on to the else condition since condition1 and condition2 is both false — and print to the screen «Good evening».
However, if the time was 14, our program would print «Good day.»