Тернарный оператор
condition ? a : b
«Тернарный оператор» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Что такое тернарный оператор?
Тернарный оператор — единственный оператор Java, принимающий три операнда. Это компактный способ выбрать одно из двух значений на основе условия.
Его форма такова: condition ? valueIfTrue : valueIfFalse.
Он возвращает значение, поэтому его можно присвоить переменной или передать непосредственно.
int age = 20;
String status = age >= 18 ? "adult" : "minor";Три части
Первая часть — логическое условие. Знак ? отделяет его от результатов.
Если условие истинно, выражение вычисляется как часть перед :. Если оно ложно, выражение вычисляется как часть после :.
Фактически вычисляется только одна из двух ветвей.
int score = 45;
String result = score >= 50 ? "pass" : "fail";Полный запускаемый пример
Вот полноценная программа, которая выводит метку на основе числа.
Условие n % 2 == 0 определяет, использовать ли "even" или "odd".
public class Main {
public static void main(String[] args) {
int n = 7;
String parity = n % 2 == 0 ? "even" : "odd";
System.out.println(parity);
}
}Это выражение
В отличие от инструкции if, тернарный оператор является выражением: у него есть значение.
Это означает, что его можно использовать внутри вызовов методов, операторов возврата и присваиваний, где инструкция не подходит.
public class Main {
public static void main(String[] args) {
int a = 9, b = 4;
System.out.println("Max is " + (a > b ? a : b));
}
}Выбор чисел
Обе ветви не обязаны возвращать строки. Здесь тернарный оператор выбирает большее из двух значений int.
Результат имеет тип int, поэтому его можно сохранить и использовать повторно.
public class Main {
public static void main(String[] args) {
int x = 12, y = 30;
int max = x > y ? x : y;
System.out.println(max);
}
}Обе ветви должны иметь совместимые типы
Java должна знать тип всего выражения, поэтому обе ветви должны иметь совместимые типы.
Если одна ветвь имеет тип int, а другая — String, код не скомпилируется.
Следите, чтобы обе стороны возвращали значения одного вида.
boolean ok = true;
// valid: both ints
int code = ok ? 200 : 404;
// invalid: int vs String would not compileВозврат из метода
Тернарные операторы особенно удобны внутри инструкций return: они заменяют четырёхстрочную конструкцию если/иначе одной строкой.
Метод ниже возвращает абсолютное значение числа.
public class Main {
static int abs(int n) {
return n < 0 ? -n : n;
}
public static void main(String[] args) {
System.out.println(abs(-8));
}
}Использование в выводе
Можно вставить тернарный оператор непосредственно в вызов вывода.
При объединении строк заключайте его в скобки, чтобы знаки ? и : были сгруппированы до того, как + объединит текст.
public class Main {
public static void main(String[] args) {
int items = 0;
System.out.println("Cart: " + (items == 0 ? "empty" : "has items"));
}
}Выбор приветствия
Один из распространённых вариантов использования — выбор одного из двух сообщений.
Условие проверяет логический флаг, а тернарный оператор выбирает подходящий текст приветствия.
public class Main {
public static void main(String[] args) {
boolean morning = true;
String greet = morning ? "Good morning" : "Hello";
System.out.println(greet);
}
}Приоритет операторов
У тернарного оператора очень низкий приоритет, поэтому арифметические операции и сравнения внутри него выполняются первыми.
В выражении a + b > 10 ? "big" : "small" Java вычисляет a + b, сравнивает результат, а затем выбирает ветвь.
При смешивании со знаком + для объединения строк добавляйте скобки.
int a = 6, b = 7;
String size = a + b > 10 ? "big" : "small";Присваивание на основе ввода
Тернарные операторы отлично подходят для инициализации переменной за один шаг.
Здесь комиссия устанавливается равной нулю для участников, а для остальных используется фиксированная сумма.
public class Main {
public static void main(String[] args) {
boolean isMember = false;
double fee = isMember ? 0.0 : 9.99;
System.out.println(fee);
}
}Быстрая проверка
Проверьте, насколько хорошо Вы понимаете синтаксис тернарного оператора.
Повторение
Тернарный оператор condition ? a : b — это компактное условное выражение Java из трёх частей.
Он возвращает значение, вычисляет только одну ветвь и требует совместимых типов с обеих сторон.
Используйте его, чтобы аккуратно присвоить, вернуть или вывести одно из двух значений.
Часто задаваемые вопросы
Урок «Тернарный оператор» бесплатный?
Да — полный текст урока «Тернарный оператор» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Тернарный оператор»?
condition ? a : b Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Тернарный оператор»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.