Статьи

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

Тернарный оператор является формой синтаксического сахара для операторов if- else . Он также известен как условный оператор, который, возможно, является более значимым именем, потому что он оценивает условия, как if делал. При условии, что оператор используется осторожно, он может сделать код более кратким, не жертвуя удобочитаемостью.

Эта статья требует от вас четкого понимания того, как if заявления работают в Java .

Троичный оператор

Тернарный оператор оценивает условие и выбирает одну из двух ветвей для выполнения. Как и во многих других языках программирования ? и : символы используются для его формирования. Другие распространенные имена, с которыми вы можете столкнуться, которые относятся к одному и тому же понятию, являются встроенными if , троичными if и условными операторами .

Синтаксис

Название троичного относится к тому факту, что оператор берет три операнда.

 condition ? exprTrue : exprFalse 

condition является логическим выражением, которое оценивается как true или false . И exprTrue и exprFalse также являются выражениями, но они могут вычислять все, что вы хотите ( кроме void ). Если условие true , троичный оператор вычисляет exprTrue . В противном случае exprFalse оценивается.

Тернарный оператор — это выражение (например, price + 20 ), которое означает, что после выполнения оно имеет значение. И это значение необходимо использовать в дальнейшем, например, присваивая его переменной или возвращая из метода, иначе выражение не скомпилируется.

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

Примеры

Как видите, базовая структура очень похожа на оператор if else- else но она сведена в одну строку. Давайте посмотрим на конкретный пример. Он демонстрирует, как простой оператор if else- else может быть заменен тернарным оператором.

 int price; if (isPremiumMember()) { price = 80; } else { price = 100; } // is equivalent to int price = isPremiumMember() ? 80 : 100; 

Переменная price получает значение в зависимости от того, является ли пользователь премиум-членом или нет. Как видите, троичный оператор является кратким и в этом случае улучшает читаемость.

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

 int price() { if (isPremiumMember()) { return 80; } else { return 100; } } 

Можно заменить на

 int price() { return isPremiumMember() ? 80 : 100; } 

Метод пересмотренных price значительно короче и разборчивее, чем раньше.

Вложение нескольких операторов

Java позволяет вложить один условный оператор в другой. Будьте осторожны при этом, хотя. Вложенные условные операторы могут препятствовать удобочитаемости.

 int amount = 10; String result = amount <= 2 ? "couple" : amount > 2 && amount < 5 ? "few" : amount <= 5 ? "several" : "many"; 

Хотя этот пример можно улучшить с помощью форматирования, иногда лучше избегать использования тернарного оператора и переходить к обычному старому маршруту if -thense или switch .

Тернарный оператор состоит из трех элементов

Резюме

Вы узнали, что троичный оператор позволяет сократить оператор if else else to до однострочного condition ? exprTrue : exprFalse condition ? exprTrue : exprFalse . Если все сделано правильно, это делает код более лаконичным и улучшает читабельность.

Однако меньшее количество строк кода не всегда лучше . Легко злоупотребить троичным оператором и сделать ваш код менее читабельным . Придерживайтесь здравого смысла и имейте в виду, что программы должны быть написаны для того, чтобы люди могли читать, и только для того, чтобы машины выполнялись . Более читаемый способ выражения условий, особенно если их много, может быть оператором switch .