Тернарный оператор 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 .
Тернарный оператор . Объектно-ориентированное программирование на Java. Платформа Java SE
Представьте, что мы хотим вычислить абсолютное значение числа.
Это число без знака.
Предположим, что abs, является функцией, которая вычисляет абсолютное значение.
Таким образом, abs 3 равна 3, а abs -3 также равно 3.
Давайте определим проблему более формально.
Если условие x больше 0 вычисляется как true, тогда вычисление abs x совпадает с вычислением x.
Если условие x больше 0 вычисляется как false, тогда вычисление abs x – это то же самое, что и вычисление значения минус x.
Теперь мы хотели бы написать выражение, которое вычисляет абсолютное значение.
Мы бы решили проблему, если бы у нас была функция f с тремя аргументами.
Первый аргумент – это условие.
Второй аргумент – это выражение для вычисления в случае true.
И третий аргумент – это выражение для вычисления в случае false.
В Java эта функция существует, называется она тернарный оператор, и имеет определенный синтаксис.
Здесь используется знак вопроса между условием и выражением для случая true и двоеточие между выражением для случая true и выражением для случая false.
В этом примере, если условие истинно, оператор выдает 1.
Если условие ложно, оператор выдает 2.
Основным типом данных в условных выражениях является тип boolean, который имеет два значения: true и false.
Но существуют ли в наших условных выражениях if else только два возможных случая?
Представьте, что вы плохо запрограммировали логическое выражение, тогда это приведет к вычислению, которое не может завершиться.
Поэтому, на самом деле, у нас есть три случая, это true, false и undefined.
В дальнейшем, анализируя сегменты кода, мы также должны учитывать это неопределенное значение.
Для логических выражений это означает, что у нас есть три возможных случая – true, false и undefined.
И это отличается от традиционной математики, где мы обычно имеем только истину и ложь.
Теперь, давайте немного вспомним о возможностях, которые мы видели.
Здесь, слева, у нас есть условное утверждение, где, в зависимости от значения булевой переменной b, мы присваиваем m или n переменной x.
С другой стороны, у нас есть тройной оператор, который позволяет писать логические выражения.
Оба сегмента кода эквивалентны.
Теперь рассмотрим этот пример.
Представьте, что у нас есть булево значение b и что выражение сравнивает b с true.
Это может быть явно упрощено до b, так как если b истинно, b == true, вычисляется как true.
И если b является ложным, b == true, вычисляется как false.
И если b не определено, выражение b == true также не определено.
Так почему бы не написать более простую версию, просто b как условие?
Аналогично вы можете поступить, если мы имеем выражение b == false.
Вы можете выбрать более простую версию, не b.
И еще вы можете написать b как условие, и поменять операторы S1 и S2.
Здесь у нас есть другое выражение.
Давайте проанализируем его.
Здесь, если b не определено, результат не определен.
Если b истинно, результат будет истинным.
И если b является ложным, результат будет ложным.
Мы рассмотрели все возможные значения b и всего выражения
И мы видим, что они имеют одинаковые значения, что они эквивалентны.
Поэтому вместо всего этого выражения мы можем написать только b.
Та же самая ситуация будет с выражением не b.
Теперь, давайте посмотрим выражение b? c: false.
Если b не определено, все выражение не определено.
Если b истинно, результат равен c.
Однако, если b является ложным, результат будет ложным.
Результат будет истина, только если b и с истина, во всех других случаях результат будет ложным.
Это эквивалентно логическому оператору и.
И наоборот, выражение b? true: c эквивалентно логическому оператору или.
Данный текст является ознакомительным фрагментом.
404: Страница не найдена
Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы приносим свои извинения за доставленные неудобства.
Что я могу сделать сейчас?
Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:
Поиск- Узнайте последние новости.
- Наша домашняя страница содержит самую свежую информацию о Java-разработке.
- Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, TheServerSide.com.
- Если вам нужно, свяжитесь с нами, мы будем рады услышать от вас.
Просмотр по категории
SearchAppArchitecture
- Почему контрактное тестирование может быть необходимо для микросервисов
Разработчики сталкиваются с многочисленными проблемами, пытаясь выполнить традиционное сквозное интеграционное тестирование микросервисов. Контракт …
- Растущая роль разработчиков, ориентированных на данные
- 12 рекомендаций по безопасности API для защиты вашего бизнеса
Как и в любом цикле разработки программного обеспечения, безопасность API должна быть встроена с самого начала. Следуйте этим рекомендациям по проектированию, развертыванию …
ПоискSoftwareQuality
- Чтобы безопасность API была успешной, разработчикам нужны интегрированные инструменты
Для большей безопасности API и более четких границ для разработчиков эксперты API World призвали к инструментам безопасности, ориентированным на разработчиков…
- Документация по API может улучшить или испортить опыт разработчиков
На конференции API World на этой неделе эксперты освещают проблемы, связанные с плохой документацией API, и предлагают способы их устранения, например отказ от . ..
- Разработчики хотят повышения производительности и эффективности в Java 20
Java 20, вероятно, будет включать полезные функции, такие как улучшения параллелизма и профилирования, но добавочные обновления …
SearchCloudComputing
- С помощью этого руководства настройте базовый рабочий процесс AWS Batch
AWS Batch позволяет разработчикам запускать тысячи пакетов в AWS. Следуйте этому руководству, чтобы настроить этот сервис, создать свой собственный…
- Партнеры Oracle теперь могут продавать Oracle Cloud как свои собственные
Alloy, новая инфраструктурная платформа, позволяет партнерам и аффилированным с Oracle предприятиям перепродавать OCI клиентам в регулируемых …
- Dell добавляет Project Frontier для периферии, расширяет гиперконвергентную инфраструктуру с помощью Azure
ПоискБезопасность
- Оборудование для включения в набор компьютерных криминалистических инструментов
Компьютерным экспертам-криминалистам для выполнения своей работы требуется нечто большее, чем программное обеспечение. Узнайте, какое оборудование представляет собой комплектный компьютер…
- Советы начинающим компьютерным криминалистам
Для тех, кто заинтересован в том, чтобы стать следователем компьютерной криминалистики, узнайте о карьере и о том, чего ожидать, а также почему …
- Риск и повторение: Microsoft и SOCRadar спорят об утечке данных
В этом выпуске подкаста обсуждается раскрытие поставщиком информации об угрозах SOCRadar крупной утечки данных Microsoft и …
ПоискAWS
- AWS Control Tower стремится упростить управление несколькими учетными записями
- Разбираем модель ценообразования Amazon EKS
В модели ценообразования Amazon EKS есть несколько важных переменных. Покопайтесь в цифрах, чтобы убедиться, что вы развернули службу…
- Сравните EKS и самоуправляемый Kubernetes на AWS
Пользователи
AWS сталкиваются с выбором при развертывании Kubernetes: запустить его самостоятельно на EC2 или позволить Amazon выполнить тяжелую работу с помощью EKS. См…
Можете ли вы использовать тернарный оператор с несколькими условиями Java с примерами кода
Можете ли вы использовать тернарный оператор с несколькими условиями Java с примерами кода
Всем привет! В этом посте мы рассмотрим, как найти ответ на вопрос «Можете ли вы использовать тернарный оператор с несколькими условиями Java» с помощью компьютерного языка.
Строка year = "старший"; если (кредиты < 30) { год = "первокурсник"; } иначе если (кредиты <= 59) { год = "второкурсник"; } иначе если (кредиты <= 89) { год = "младший"; } Сравните это с тернарным оператором: Строка year = кредиты < 30 ? «первокурсник»: кредиты <= 59? "второкурсник": кредиты <= 89? "младший старший";
Как мы уже видели, проблема с Java-переменной «Можно ли использовать тернарный оператор с несколькими условиями» была решена путем использования множества различных экземпляров.
Можем ли мы использовать несколько условий в тернарном операторе в Java?
Сначала научитесь писать min(x, y) с помощью одного тернарного оператора. Получив это, измените следующий код для min(x, y, z), чтобы использовать тернарный оператор, а затем замените его кодом для min(x, y), который вы разработали на предыдущем шаге. Показать активность в этом посте.
Можем ли мы использовать тернарный оператор для трех условий?
Условный (тернарный) оператор — это единственный оператор JavaScript, который принимает три операнда: условие, за которым следует вопросительный знак ( ? ), затем выражение для выполнения, если условие истинно, за которым следует двоеточие ( : ), и, наконец, оператор выражение для выполнения, если условие ложно. 13 сентября 2022 г.
Можете ли вы делать несколько вещей в тернарном операторе?
Тернарный оператор JavaScript также позволяет выполнять несколько операций в одном выражении. Это то же самое, что написать несколько операций в операторе if else. 24 апреля 2021 г.
Может ли тернарный оператор быть вложенным в Java?
Разработчик может создать вложенный тернарный оператор Java, если он настроит выражение, которое будет оцениваться при истинном или ложном условии, как новый, независимый тернарный оператор.08 августа 2022 г.
Можно ли объединить тернарные операторы?
Тернарный оператор в Javascript — это специальный оператор, который принимает три операнда. Он также известен как «условный» или «встроенный оператор if». Тернарный оператор в Javascript делает наш код чище и проще. Его можно объединить в цепочку, как блок if-else if.else if-else.20 января 2022 г.
Как написать несколько условий на Java?
При использовании нескольких условий мы используем логическое И && и логическое ИЛИ || операторы. Примечание. Логическое И && возвращает значение true, если оба утверждения верны. Логическое ИЛИ || возвращает true, если хотя бы одно из утверждений верно. 12 мая 2020 г.
Тернарный оператор быстрее, чем if?
Более того, как уже отмечалось, на уровне байтового кода на самом деле нет никакой разницы между тернарным оператором и if-then-else.