JavaRush /Курсы /JAVA 25 SELF /Логический тип boolean и логические операции

Логический тип boolean и логические операции

JAVA 25 SELF
3 уровень , 3 лекция
Открыта

1. Логический тип данных: boolean

Как мы уже убедились, в Java есть очень полезный оператор — if-else. Он выполняет один блок команд, если условие в скобках истинно, и второй блок команд, если условие ложно.

Чтобы было удобно работать с выражениями, которые могут быть истинными или ложными, в Java добавили специальный тип — boolean. Его главная особенность заключается в том, что переменные этого типа могут принимать всего два значения: true (истина) и false (ложь).

Никакие другие значения присвоить переменным типа boolean невозможно. Компилятор не позволит.

Примеры переменных типа boolean:

boolean isAdult = true;
boolean hasMoney = false;
Пример объявления переменных типа boolean

У переменной типа boolean всего два значения — true и false. Всё! Почти как у успешного теста — либо "прошёл", либо "упал".

2. Операции сравнения

И зачем же нужен такой примитивный тип? Реальная мощь boolean проявляется, когда мы строим логические выражения. Обычно они получаются с помощью операторов сравнения.

Оператор Назначение Пример Значение
== Равно
a == b
true или false
!= Не равно
a != b
true или false
> Больше
a > b
true или false
< Меньше
a < b
true или false
>= Больше или равно
a >= b
true или false
<= Меньше или равно
a <= b
true или false

Пример:

int age = 20;
boolean isAdult = age >= 18;   // true (20 больше или равно 18)
boolean isTeenager = age >= 13 && age < 18; // false (20 не меньше 18)
boolean isEven = age % 2 == 0; // true (20 делится на 2 без остатка)

isAdult здесь станет true, потому что 20 – это действительно "взрослый" возраст.

Важный момент 1:

Операторы, состоящие из двух символов, разрывать нельзя.


a < = 10
speed > = max
age = = 18
time ! = 0
Так писать нельзя! Операторы должны быть слитно: <=, >=, ==, !=

Важный момент 2:

Обратите внимание, что операторов => и =< нет: есть только <= и >=. Если вы напишете a =< 3, ваш код просто не скомпилируется.

Важный момент 3:

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

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

В языке 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))

4. Таблицы истинности

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

Оператор AND

Оператор AND, он же И, он же &&, он же конъюнкция, он же логическое умножение.

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

Оператор OR

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

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

Оператор NOT

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

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

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

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

5. Примеры логических операций: and, or, not

Операция "И", AND, обозначается &&

Результат истина, только когда обе переменные истинны.

int age = 16;
boolean hasTicket = true;
boolean canAttend = age >= 14 && hasTicket; // true (16 больше 14 И билет есть)

Если тебе есть 14 И у тебя есть билет — проходи!

Операция "ИЛИ", OR, обозначается (||)

Результат истина, если хотя бы одно условие истинно.

boolean isAdmin = false;
boolean isModerator = true;
boolean canEdit = isAdmin || isModerator; // true (можно редактировать, если хоть что-то из этого true)

Если ты админ ИЛИ модератор — пожалуйста, нажимай кнопки!

Операция "НЕ", NOT, обозначается (!)

Инвертор превращает истину в ложь и наоборот.

boolean isWeekend = false;
boolean shouldGoToWork = !isWeekend; // true (если не выходные, работаем)

Если НЕ выходные — пора вставать!

Комбинирование: стройте условия какой угодно сложности

Можно комбинировать сколько угодно логических операций (желательно не перестараться). Скобки можно (и нужно!) использовать для ясности.

Пример:

int age = 17;
boolean hasTicket = false;
boolean isVip = true;

boolean canGo = (age >= 18 && hasTicket) || isVip; // true, потому что isVip = true

Логика: если человек совершеннолетний и с билетом, или если он VIP — пропускаем. Если не VIP — только если взрослый и с билетом.

1
Задача
JAVA 25 SELF, 3 уровень, 3 лекция
Недоступна
Поиск правды 🧐
Поиск правды 🧐
1
Задача
JAVA 25 SELF, 3 уровень, 3 лекция
Недоступна
Результат матча ⚽
Результат матча ⚽
1
Задача
JAVA 25 SELF, 3 уровень, 3 лекция
Недоступна
Планирование пикника 🧺
Планирование пикника 🧺
1
Задача
JAVA 25 SELF, 3 уровень, 3 лекция
Недоступна
Комфортная температура в помещении 🌡️
Комфортная температура в помещении 🌡️
Комментарии (12)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Илья Уровень 4
29 декабря 2025
Вообще, нужно меньше смотреть на подсказки и думать головой. Я делаю сначала в Intellyj IDEA а потом гружу на платформу.
Илья Уровень 4
29 декабря 2025
"Переменная canGoToPark должна быть объявлена и вычисляться с помощью логического оператора &&, чтобы принимать значение true только если isSunny и isWeekend оба равны true" Как это соотносится с кодом: boolean isSunny = true; boolean isWeekend = false;??? Ведь если исходить из логики оператора && обе переменные должны быть "true", тогда и переменная canGoToPark будет "true".
tov.Srg Уровень 4
29 декабря 2025
шо все ноют по поводу легкости? во первых уровень низкий, второе тут прививается правильный синтаксис, третье - не пугают новичков сложной логикой, чтобы не отбить интерес. Все хорошо по-моему
DimaSergeew Уровень 4
28 октября 2025
Все задачи уровня Easy, Medium - тут и близко не пахнет, лучше меньше задач и 3 делать 1 easy, 2 medium, 3 hard
Sergey Mos Уровень 12
31 декабря 2025
Даже не представляю какую хардовую задачу можно сделать на boolean, &&, || и !. Конструкции примитивные. Что там усложнять?
Boris Vasilenko Уровень 12
9 октября 2025
Хм, если делать задачу "Планирование пикника" по рекомендациям анализатора кода, то проверка решения выдаёт ошибку :)
Ramizzz Уровень 4
12 сентября 2025
Сложновато, но идем дальше
Patriek Уровень 23
4 сентября 2025
По сравнению с предыдущим курсом Java, такие же задачи по уровню сложности были EASY, а здесь MEDIUM... Не понятно... 🤔
Сергей Уровень 8
13 сентября 2025
Согласен задачки уровня EASY. получается здесь EASY уровень - это если смог написать System.out.println("Hello world!") :)
Alina Gabidulina Уровень 27
14 сентября 2025
люди еще и умудряются писать, что сложновато)))
hidden #3515555 Уровень 26
16 сентября 2025
Лет 5 назад на начальных уровнях был BufferedReader. Если сейчас в основном квесте подача материалов по потокам ввода/вывода вызывает, мягко говоря, вопросы, то тогда это была непреодолимая стена. Оказуалили
12 ноября 2025
Как там дальше? Тоже так или по другому