JavaRush /Курсы /Java Syntax Pro /Логические операции

Логические операции

Java Syntax Pro
3 уровень , 3 лекция
Открыта

1. Булева логика

В языке Java нельзя записать выражение 18 < age < 65 — оно будет синтаксически некорректным и программа не скомпилируется.

Зато можно записать его так:

            (18 < age) И (age < 65)
        

Разумеется, вместо слова И там будет другой логический оператор, и сейчас мы как раз поговорим о них подробнее.

В Java есть три логических оператора: AND (и), OR (или) и NOT (не).

Хорошая новость: используя скобки, можно построить логические выражения любой сложности.

Плохая новость: разработчики Java решили вместо слов and, or и not, использовать обозначения из языка C.

Внимание на экран:

Логический оператор Ожидание Реальность
И (∧) and &&
ИЛИ (∨) or ||
НЕ (¬) not !

Вот несколько примеров использования логических операторов в Java:

Выражение Расшифровка Пояснение
(0 < a) && (a < 100)
(0 < a) and (a < 100)
(0 < a) И (a < 100)
(!a) && (!b)
(not a) and (not b)
(НЕ a) И (НЕ b)
!(!a || !b)
not((not a) or (not b))
НЕ((НЕ a) ИЛИ (НЕ b))


2. Примеры использования операторов сравнения и булевых переменных

Там, где можно написать логическое выражение, можно написать и логическую переменную.

Например:

Код Пояснение
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("Вы можете работать");
Если значение age лежит между 18 и 65, на экран выводится текст «вы можете работать».
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("Вы можете работать");
Мы создали переменную isYoung и вынесли в нее первую часть выражения. Только заменили age >= 18 на age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("Вы можете работать");
Мы создали переменную isOld и вынесли в нее вторую часть выражения. При этом заменили age <= 65 на age > 65.

Эти три примера эквивалентны. Только во втором мы вынесли часть выражения из условия if в отдельную логическую переменную – isYoung. В третьем примере мы вынесли вторую часть выражения во вторую переменную — isOld.



3. Логическая арифметика

Вкратце пройдемся по логическим операциям.

Оператор AND, он же И, он же &&, он же конъюнкция.

Выражение Результат
true && true
true
true && false
false
false && true
false
false && false
false

Другими словами, результат выражения равен true (истина) только если оба значения, которые участвуют в выражении, равны true (истина). В остальных случаях всегда false (ложь).

Оператор OR, он же ИЛИ, он же ||, он же дизъюнкция.

Выражение Результат
true || true
true
true || false
true
false || true
true
false || false
false

Другими словами, результат выражения равен true (истина) всегда, если хотя бы одно значение, участвующее в выражении, равно true (истина). Если оба равны false, то результат false.

Оператор NOT, он же НЕ, он же !, он же инверсия.

Выражение Результат
!true
false
!false
true

Меняет true на false и наоборот.

Полезные выражения:

Выражение Результат
m && !m
false
m || !m
true
!(a && b)
!a || !b
!(a || b)
!a && !b


Комментарии (586)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Азамат Уровень 1
15 января 2026
бедный Амиго, не надо тебе оно
22 января 2026
😂
d0vbnya Уровень 2
29 ноября 2025

//Из-за того что у Амиго стоит, мне дальше учится
System.exit(0)
Роман Зарубин Уровень 8
21 ноября 2025
Работаем
Денис Уровень 4
14 октября 2025
В задаче указано от 20 до 60 лет включительно, но в правильном решении стоит if (age < 20 || age > 60) В итоге мое решение не верно if (age <= 20 || age >= 60) { System.out.println("можно не работать"); }
Quantic_Kid Уровень 12
15 ноября 2025
Имеллось ввиду что включительный возраст работы от 20 до 60. По сути мы в условии выделяем что "если возраст меньше 20"(не включительно - если 20, можешь работать). Так точно и другое "если возраст больше 60" (60 не включительно), тогда тоже не работай. Твое решение правильное, если бы цель была наоборот сказать " нужно работать".
Peter Уровень 6
14 января 2026
В итоге, бро, ты плохо научился читать=)
Big198801 Уровень 33
13 августа 2025
if(((a + b) <= c) || ((a + c) <= b) || ((b + c) <= a))){ System.out.println(TRIANGLE_NOT_EXISTS); }else System.out.println(TRIANGLE_EXISTS);
Gris Hiver Уровень 1
28 июля 2025
Я сначала не знала, что входящие аргументы можно менять в Input data. Не повторяйте моих ошибок) Меняйте аргументы и тестируйте прежде чем отправлять на проверку.
Anonymous #3516548 Уровень 4
20 июля 2025
use &&
Evgeny Rassadnikov Уровень 8
17 июня 2025
Чет слишком простая задача
Anonymous #3585174 Уровень 33
26 мая 2025
like
23 мая 2025
Scanner sc = new Scanner (System.in); int x = sc.nextInt(); int y = sc.nextInt(); if (x>0&&y>0){ System.out.println("1"); }else if (x<0&&y>0){ System.out.println("2"); }else if (x<0&&y<0){ System.out.println("3"); }else System.out.println("4");
Yaroslav Уровень 1
1 августа 2025
неверное решение, хотя проверку пройдет. попробуйте ввести одну из координат 0 и этот код выдаст 4. проверьте условие для четвертой четверти.