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

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

Открыта

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


Комментарии (581)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Азамат
Уровень 1
15 января, 13:03
бедный Амиго, не надо тебе оно
22 января, 21:12
😂
d0vbnya
Уровень 2
29 ноября 2025, 02:31
//Из-за того что у Амиго стоит, мне дальше учится
System.exit(0)
Костя
Уровень 9
11 мая, 14:23
Жиза
Роман Зарубин
Уровень 13
21 ноября 2025, 09:47
Работаем
Денис
Уровень 4
14 октября 2025, 20:17
В задаче указано от 20 до 60 лет включительно, но в правильном решении стоит if (age < 20 || age > 60) В итоге мое решение не верно if (age <= 20 || age >= 60) { System.out.println("можно не работать"); }
Quantic_Kid
Уровень 13
15 ноября 2025, 01:18
Имеллось ввиду что включительный возраст работы от 20 до 60. По сути мы в условии выделяем что "если возраст меньше 20"(не включительно - если 20, можешь работать). Так точно и другое "если возраст больше 60" (60 не включительно), тогда тоже не работай. Твое решение правильное, если бы цель была наоборот сказать " нужно работать".
Peter QA Performance/Automation
14 января, 22:00
В итоге, бро, ты плохо научился читать=)
Big198801
Уровень 35
13 августа 2025, 18:12
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, 13:03
Я сначала не знала, что входящие аргументы можно менять в Input data. Не повторяйте моих ошибок) Меняйте аргументы и тестируйте прежде чем отправлять на проверку.
Anonymous #3516548
Уровень 4
20 июля 2025, 18:05
use &&
hidden #3592788
Уровень 8
17 июня 2025, 12:11
Чет слишком простая задача
Anonymous #3585174
Уровень 33
26 мая 2025, 18:27
like
23 мая 2025, 16:13
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, 20:52
неверное решение, хотя проверку пройдет. попробуйте ввести одну из координат 0 и этот код выдаст 4. проверьте условие для четвертой четверти.