User Аркадий Паровозов
Аркадий Паровозов
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 Свои вопросы и поправки оставляйте в комментариях.
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Александр Пьянов Уровень 41, Владимир, Россия
20 января 2021
есть пару интересных моментов с тернарником и автобоксингом: если взять, например такой код

	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
А если все равны?)
Артур Прохоренко Уровень 28, Гомель, Белоруссия
22 июля 2020
Супер! Спасибо за очень наглядный пример!
Jeanne Sinjean Уровень 9, Санкт-Петербург, Россия
12 июля 2020
Спасибо! Хорошее объяснение =)
Vasya Уровень 0
11 июля 2020
БЛИН ЧУВАК, СПАСИБО ЗА ТАКОЕ ЧЕТКОЕ ОБЪЯСНЕНИЕ