JavaRush/Java блог/Random/Тернарный оператор за пять сек.
Sasha
11 уровень

Тернарный оператор за пять сек.

Статья из группы Random
участников
Я не копирайтер, тапками не кидать.🤗 Приступим сразу к делу. Тернарный оператор за пять сек. - 1Тернарный оператор проводит операцию сравнения между двумя объектами: работает почти так же, как if-else, просто записывается более компактно. Он состоит из условия, Блока номер один и Блока номер два, и выглядит так: (Значение один (операция) значение два, далее идет знак вопроса (?), после которого Блок1 : Блок2. Что же это означает? Если в условии у нас получается True, мы выполняем первый блок, если же False, мы выполняем второй блок.Тернарный оператор за пять сек. - 1Допустим, нам надо вычислить минимальное из двух чисел. Вот самый наглядный пример:
int y = 5;
int x = 10;

int min = y < x ? y : x; // Условие | Блок1 | Блок2
System.out.println(min) // min == 5
? — это переход к блокам. Если сравнение слева выдает TRUE, выполняется блок ОДИН. В этом случае выполнится Блок1, ибо Y меньше X. А как быть, если нам надо узнать минимальное, допустим, из ПЯТИ чисел? Еще один наглядный пример:
public static int min(int a, int b, int c, int d, int e) {
        int min = a < b ? a : b; // А меньше Б? Если да, минимальное число равно A. Иначе min = b;
        min = c < min ? c : min; // C меньше МИНИМАЛЬНО ЧИСЛА? Если да min = c. Иначе min = min
        min = d < min ? d : min; // D меньше МИНИМАЛЬНО ЧИСЛА? Если да min = d. Иначе min = min
        min = e < min ? e : min; //  E меньше МИНИМАЛЬНО ЧИСЛА? Если да min = e. Иначе min = min
        return min; // Возвращаем полученное минимальное число.
}
Таким красивым образом получаем минимальное число из пяти. Надеюсь, вы все поняли)) А если не поняли, не спешите огорчаться: вот вам объяснение в видео. Обязательно его посмотрите! https://www.youtube.com/watch?v=fHCNlQY-ssI Свои вопросы и поправки оставляйте в комментариях.
Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
20 января 2021, 10:01
есть пару интересных моментов с тернарником и автобоксингом: если взять, например такой код
static int getMax(Integer a, int b) {
	return a > b ? null : b;
}
то он прекрасно скомпилируется и выдаст ошибку времени выполнения при вызове этого метода
getMax(2, 1)
однако, если это переписать на обычный if - получим ошибку компиляции, что в свою очередь, является наилучшим исходом.
static int getMax(Integer a, int b, int c) {
		if (a > b) {
			return a;
		} else {
			return null;
		}
Это связано с тем, что тернарник будет автоупаковку/автораспаковку если один из второго и третьего операндов имеет примитивный тип T, а тип другого является результатом применения преобразования бокса к T, то тип условного выражения-T статья по теме
Lev Shuvatovvv
Уровень 7
8 августа 2020, 10:34
А если все равны?)
Fase Play
Уровень 9
14 августа 2020, 12:23
Тогда лучше написать y <= x
22 июля 2020, 13:31
Супер! Спасибо за очень наглядный пример!
Jeanne Sinjean
Уровень 9
12 июля 2020, 19:37
Спасибо! Хорошее объяснение =)
Sasha EXPERT в Google
13 июля 2020, 03:40
Стараемся.)