1. Логічний тип даних: boolean
Як ми вже переконалися, у Java є дуже корисний оператор — if-else. Він виконує один блок коду, якщо умова в дужках істинна, інакше — інший.
Щоб зручно працювати з виразами, які можуть бути істинними або хибними, у Java існує спеціальний тип — boolean. Його головна особливість полягає в тому, що змінні цього типу можуть набувати лише двох значень: true (істина) і false (хиба).
Жодних інших значень присвоїти змінним типу boolean неможливо. Компілятор цього не дозволить.
Приклади змінних типу boolean:
boolean isAdult = true;
boolean hasMoney = false;
У змінної типу boolean лише два значення — true і false. Усе! Майже як у тесті — або «пройшов», або «не пройшов».
2. Операції порівняння
І навіщо ж потрібен такий примітивний тип? Справжня міць boolean виявляється, коли ми будуємо логічні вирази. Зазвичай їх утворюють за допомогою операторів порівняння.
| Оператор | Призначення | Приклад | Значення |
|---|---|---|---|
| == | Дорівнює | |
true або false |
| != | Не дорівнює | |
true або false |
| > | Більше | |
true або false |
| < | Менше | |
true або false |
| >= | Більше або дорівнює | |
true або false |
| <= | Менше або дорівнює | |
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) and (a < 100) | (0 < a) І (a < 100) |
|
(not a) and (not 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 — допускають лише за умови повноліття та наявності квитка.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ