Ответ
Условный оператор if-else выполняет разные блоки кода в зависимости от истинности логического выражения.
Базовый пример:
int age = 20;
if (age >= 18) {
System.out.println("Доступ разрешен.");
userService.grantAccess(userId);
} else {
System.out.println("Доступ запрещен.");
throw new AccessDeniedException("User is underage.");
}
Цепочка условий else if:
int testScore = 85;
char grade;
if (testScore >= 90) {
grade = 'A';
} else if (testScore >= 80) { // Проверяется, только если первое условие false
grade = 'B';
} else if (testScore >= 70) {
grade = 'C';
} else {
grade = 'F';
}
System.out.println("Оценка: " + grade); // Выведет 'B'
Сокращенная форма (без else):
boolean isDataValid = validate(inputData);
if (isDataValid) {
processData(inputData); // Блок else может быть опущен, если действие требуется только при true
}
// Код выполняется здесь в любом случае
Тернарный условный оператор (сокращение для простых случаев):
// Синтаксис: условие ? выражение_если_true : выражение_если_false
int max = (a > b) ? a : b;
String status = (connection.isActive()) ? "ONLINE" : "OFFLINE";
// Эквивалентно:
int max;
if (a > b) {
max = a;
} else {
max = b;
}
Важно: if-else — это оператор потока управления, а тернарный оператор (?:) — это оператор, возвращающий значение.
Ответ 18+ 🔞
А, ну это же классика, блядь! Условный оператор if-else — это как на развилке стоять: направо пойдёшь — коня потеряешь, налево пойдёшь — в жопу получишь, а прямо пойдёшь — нихуя не изменится. Всё зависит от того, правда перед тобой или ложь, ёпта.
Смотри, как это просто, блядь:
int age = 20;
if (age >= 18) {
System.out.println("Доступ разрешен.");
userService.grantAccess(userId);
} else {
System.out.println("Доступ запрещен.");
throw new AccessDeniedException("User is underage.");
}
Переводим на русский: если возраст позволяет, то входи, герой, получай доступ. А если нет — иди нахуй, мелкий, с исключением в зубах. Всё честно.
А бывает, что развилок — овердохуища, и надо проверить кучу всего. Тут на помощь приходит else if, этакая лестница условий.
int testScore = 85;
char grade;
if (testScore >= 90) {
grade = 'A';
} else if (testScore >= 80) { // Сюда зайдём, только если сверху провалились
grade = 'B';
} else if (testScore >= 70) {
grade = 'C';
} else {
grade = 'F';
}
System.out.println("Оценка: " + grade); // Выведет 'B'
Работает как сито, блядь: не просеялся через первое условие — летишь проверяться во второе, и так далее, пока не попадёшь в else, который как помойка — сюда сгребается всё, что никуда не подошло.
Иногда else вообще не нужен, если тебе похуй на ложь. Сделал проверку — и пошёл дальше.
boolean isDataValid = validate(inputData);
if (isDataValid) {
processData(inputData); // Обработаем, только если всё ок
}
// А тут код выполнится в любом случае, даже если данные — полная мудата
Ну и король лаконичности — тернарный оператор. Для тех, кому впадлу писать четыре строки if-else, когда можно в одну впихнуть.
// Синтаксис: условие ? выражение_если_true : выражение_если_false
int max = (a > b) ? a : b;
String status = (connection.isActive()) ? "ONLINE" : "OFFLINE";
// Это то же самое, что:
int max;
if (a > b) {
max = a;
} else {
max = b;
}
Только не обманывай себя, хитрая жопа: if-else — это команда, что делать, а тернарник — это выражение, которое возвращает значение. Как быстренько выбрать одно из двух — он мастер. Но если тебе нужно не просто значение присвоить, а, например, пол-программы выполнить или исключение выкинуть — пиши нормальный if, а то потом сам от себя охуеешь, когда эту конструкцию читать будешь.