Перейти к контенту

Примеры применения тернарного оператора Java

Тернарный(тройной) оператор Java является единственным условным оператором, который принимает три операнда. Используется как замена одного оператора if-then-else и часто применяется в Java-программировании.

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

 

тернарный оператор Java пример

Примеры простых тернарных операторов

Одним из применений тернарного оператора в Java является назначение минимального (или максимального) значения двух переменных третьей переменной, по существу заменяя вызов метода Math.min (a, b) или Math.max (a, b).

Вот пример, который присваивает минимуму из двух переменных, a и b, третьей переменной с именем minVal:

minVal = (a< b) ? a : b.

В этом коде, если переменная a меньше, чем b, minVal присваивается значение a; в противном случае minVal присваивается значение b.

Обратите внимание, что круглые скобки в этом примере являются необязательными, поэтому вы можете написать то же выражение так minVal = a< b ? a : b.

Я думаю, что круглые скобки делают код немного легче для чтения, но опять же, они не являются обязательными, поэтому используйте любой синтаксис, который вы предпочитаете.

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

int absValue = (a<0)? -а: а.

Первый операнд в тройном операторе должен быть логическим или оператором с логическим результатом. Если первый операнд равен true, то оператор возвращает второй операнд, иначе он возвращает третий операнд.

Общий синтаксис

Учитывая эти примеры, видно, что общий синтаксис выглядит следующим образом:

result = testCondition ? value1 : value2

Как описано в Oracle documentation, логика применения состоит в том, что «Если testCondition имеет значение true, присвойте значение value1 результату; в противном случае присвойте значение value2 результату».

Вот еще два примера, которые демонстрируют это очень ясно. Вот пример использования значения с плавающей запятой:

// результату присваивается значение 1.0 
float result = true ? 1.0f : 2.0f

Использования String:

// результату присваивается значение «Извини, чувак, это ложь».

String result = false ? "Dude, that was true" : "Sorry Dude, it's false";

testCondition может быть либо простым логическим значением, либо может быть оператором, который оценивает логическое значение, как оператор (a<0), показанный ранее.

Еще один пример, который я видел в исходном коде проекта под названием Abbot:

private static final int subMenuDelay = Platform.isOSX() ? 100 : 0;

Конструкция «IF (COND) THEN Statement (s) ELSE Statement (s)» сама по себе является выражением.

«COND ? Statement : Statement» является выражением, и, следовательно, может находиться справа от присваивания.

Можно использовать, чтобы избежать репликации вызова функции с большим количеством параметров: myFunc ((COND? defaultValue: getMyFuncParameter ())).

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

returnString = "There " + (x > 1 ? " are " + x + " cookies" : "is one cookie") + " in the jar."

Пример, демонстрирующих аналогичную операцию в String, на этот раз для правильного вывода приветствия для определенного пола человека:

returnString = "Thank you " + (person.isMale() ? "Mr. " : "Ms. ") + person.getLastName() + "."

Вот исходный код класса Java, который я использовал для тестирования некоторых примеров, показанных в этом руководстве:

public class JavaTernaryOperatorExamples
{
 public static void main(String[] args)
  {
    // минимальное значение
    int minVal, a=3, b=2;
    minVal = a < b ? a : b;
    System.out.println("min = " + minVal);
    
    // абсолютное значение
    a = -10;
    int absValue = (a < 0) ? -a : a;
    System.out.println("abs = " + absValue);

    // результату присваивается значение 1.0
    float result = true ? 1.0f : 2.0f;
    System.out.println("float = " + result);
 
    // результат присваивается значение "Извини, чувак, это ложь"
    String s = false ? "Dude, that was true" : "Sorry Dude, it's false";
    System.out.println(s);
    
    // пример использования тернарного оператора в правой части строки
    int x = 5;
    String out = "There " + (x > 1 ? " are " + x + " cookies" : "is one cookie") + " in the jar.";
    System.out.println(out);

  }
}

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

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

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)