Сокращенныя форма if java

If-else в Java

В Java оператор ветвления if-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 присваивается результат выражения, находящегося между знаками вопроса и двоеточия. Если условие ложно, то присваивается результат выражения, находящегося после двоеточия.

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

Источник

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

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

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

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

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

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

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

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

else в языке Java означает «в ином случае». То есть если условие if не является истинным, выводится то, что в блоке 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 , а все остальные блоки игнорируются.

Вложенный if

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

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

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

«Элвис»

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

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

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

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

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

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

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

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 :

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

Источник

Java. Оператор условного перехода if

Часто, при написании программ, нужно чтобы ход решения задачи выполнялся в зависимости от некоторого условия. Для этого в Java (и в других языках программирования) используется оператор условного перехода if .

Оператор условного перехода позволяет организовать разветвления процесса выполнения в программе.

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

Оператор условного перехода имеет две формы представления:

2. Какой общий вид имеет полная форма оператора условного перехода?

Общий вид оператора условного перехода в полной форме:

if (условие) оператор1; else оператор2;

Сначала проверяется значение условия . Если оно равное true (то есть истинно), тогда выполняется оператор1 . В противном случае выполняется оператор2 .

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

3. Какой общий вид имеет сокращенная форма оператора условного перехода?

Общий вид оператора условного перехода в сокращенной форме:

if (условие) оператор;

Оператор if в сокращенной форме выполняется следующим образом. Сначала проверяется значение условия . Если оно истинно (равно true ) тогда выполняется оператор . Если значение условия не выполняется (равно false ), тогда осуществляется переход к следующему оператору (ничего не выполняется).

Если нужно выполнить несколько операторов, то они берутся в блок скобок < >.

if (условие) < // несколько операторов . >
4. Примеры использования оператора условного перехода, имеющего полную форму представления

Пример 1. Фрагмент программного кода, в котором находится максимальное значение между двумя числами.

float x, y; float max; // максимум // x, y - задаются . if (x>y) max = x; else max = y;

Пример 2. Определение значения переменной f в зависимости от введенного значения переменных a , x , y . Использование логических выражений для вычисления значения.

Фрагмент программного кода, который решает данное выражение

float x, y, a; float f; // результат // x, y, a - задаются . if ((5<=a)&&(a<=10)) f = (float)(Math.sin(x)+Math.cos(y)); else f = 2*x + (y*y)/(x*x+3);
5. Примеры использования оператора условного перехода, который имеет сокращенную форму представления

Пример 1. Заданы четыре переменные a , b , c , d в которых записаны некоторые значения. Из заданных значений переменных нужно найти максимальное.

// сокращенная форма оператора if int a, b, c, d; // заданные переменные int max; // максимум - результат // a, b, c, d - задаются . max = a; if (maxif (maxif (max

Пример 2. Фрагмент программы, которая в зависимости от номера месяца month записывает количество дней в этом месяце в переменную days . Номер месяца month задается целым числом от 1 до 12.

// сокращенная форма оператора if // определение количества дней в месяце int month; int days; // ввод значения month = 1..12 . days = 31; // начальное присваивание if ((month==4)||(month==6)||(month==9)||(month==11)) days = 30; if (month==2) days = 28;
6. Пример использования вложенных операторов условного перехода

Операторы условного перехода могут иметь неограниченное количество уровней вложения. Следующий пример демонстрирует применение вложенных операторов условного перехода.

Пример. Поиск максимального значения между тремя числами a , b , c .

// вложенные операторы if int a, b, c; int max; // a, b, c - задаются . if (a>b) < if (a>c) max = a; else max = c; > else < if (b>c) max = b; else max = c; >

Связанные темы

Источник

Читайте также:  Node js emit html
Оцените статью