Примеры простых тернарных java-операторов
Тернарный (тройной) java-оператор – условный оператор, принимающий три операнда. Это замена if-then-else выражения, которая часто применяется в программировании на Java. Мы можем применять тройной оператор, дабы упростить код, а именно сократить количество строк, сделав его лаконичным и наглядным. Как такого добиться, будет показано ниже.
Примеры простых тернарных операторов
Одним из наиболее распространенных применений тернарного оператора в Java является назначение максимального или минимального значения 2-х переменных третей переменной, заменяя вызов метода Math.max (a, b) или Math.min (a, b).
Приведем пример, присваивающий минимум из 2-х переменныхa и b, 3-й переменной minVal:
minVal = (a< b) ? a : b.
В приведенном выше коде, если переменная a будет меньше, то переменной minVal присваивается значение a; в. Если же наоборот, a будет больше b, то minValполучит значение b.
Внимание! В этом примере круглые скобки совсем не обязательные, поэтому можно построить выражения следующим образом: minVal = a< b ? a : b.
Круглые скобки делают код несколько легче для чтения, но они не обязательные, поэтому вы можете использовать любой ситнаксис, который вам понравится.
Можно воспользоваться аналогичным подходом, чтобы получить абсолютное значение числа:
intabsValue = (a<0)? -а: а.
При этом первый операнд в тройном операторе должен быть оператором с логическим результатом или логическим. Если первый операнд = rue, то оператор возвращает второй операнд, в противном случае он возвращает третий операнд.
Общий синтаксис
Учитывая перечисленные выше примеры, очевидно, что общий синтаксис выглядит так:
result = testCondition ? value1 : value2
В Oracledocumentation описано, что логика применения заключается в том, что «Если testCondition = true, присвойте значение value1 результату; иначе присвойте результату значение value2».
Приведем еще два ярких примера. Пример 1 – значение с плавающей запятой:
// результату присваивается значение 1.0
floatresult = true ?1.0f : 2.0f
Использования String:
// результату присваивается значение «Извини, чувак, это ложь».
Stringresult = false ?»Dude, thatwastrue» :»SorryDude, it’sfalse»;
testConditionбывает простым логическим значением или оператором, оценивающим логическое значение (точно так же как оператор (a<0), рассматриваемый нам выше).
Пример 2 – исходный код проекта Abbot:
privatestaticfinalintsubMenuDelay = Platform.isOSX() ? 100 : 0;
Конструкция «IF (COND) THEN Statement (s) ELSE Statement (s)» сама по себе является выражением.
«COND ?Statement :Statement» является выражением, и, как следствие, может располагаться справа от присваивания.
Можно использовать, дабы избежать репликации вызова функции с большим числом параметров: myFunc ((COND? defaultValue: getMyFuncParameter ())).
Также приведем пример, где условный оператор встроен в строку, используемый для построения String в зависимости от того, является ли х множественным или единственным числом:
returnString = «There » + (x > 1 ? » are » + x + » cookies» :»isonecookie») + » inthejar.»
Пример аналогичной операции в String. Однако для правильного вывода привествия здесь используется конкретный пол человека:
returnString = «Thankyou » + (person.isMale() ?»Mr. » :»Ms. «) + person.getLastName() + «.»
Приведем еще один пример исходного кода класса Java для тестирования примеров, показанных в данном руководстве:
publicclassJavaTernaryOperatorExamples
{
publicstaticvoidmain(String[]args)
{
// минимальное значение
intminVal, a=3, b=2;
minVal = a < b ? a : b;
System.out.println(«min = » + minVal);
// абсолютное значение
a = -10;
intabsValue = (a < 0) ? -a : a;
System.out.println(«abs = » + absValue);
// результату присваивается значение 1.0
floatresult = true ?1.0f : 2.0f;
System.out.println(«float = » + result);
// результат присваивается значение «Извини, чувак, это ложь»
String s = false ?»Dude, thatwastrue» :»SorryDude, it’sfalse»;
System.out.println(s);
// пример использования тернарного оператора в правой части строки
int x = 5;
Stringout = «There » + (x > 1 ? » are » + x + » cookies» :»isonecookie») + » inthejar.»;
System.out.println(out);
}
}
Удалось ли вам разобраться с тернарного оператора Java? Хорошими ли были наши примеры? Напишите свое мнение в комментариях.