Логічні оператори
Існує кілька бінарних логічних операторів та один унарний. Як аргументи для всіх цих операторів виступають логічні літерали (константи), логічні змінні та вирази, що мають логічне значення.
Оператори:
!
— «заперечення», унарний оператор, змінює значення протилежне (інвертує: брехня перетворює на істину, а істину — на брехню).
&&
— логічне «і» («кон'юнкція», «перетин»), бінарна операція, повертає справжнє значення тоді й лише тоді, коли обидва операнди істини.
||
— логічне «або» («диз'юнкція», «об'єднання»), бінарна операція, повертає справжнє значення, коли хоча б один із справжніх операндів.
У логічних операторів наступний пріоритет: заперечення, кон'юнкція, диз'юнкція. Так само, як і у випадку з арифметичними операторами для корекції пріоритету, використовуються круглі дужки. Якщо одна пара дужок вкладена в іншу пару дужок, спочатку обчислюється значення у внутрішніх дужках. Приклади:
boolean a = true;
boolean b;
b = a || true;
b = !b;
System.out.println(b);
a = a || b;
boolean c;
c = a && (a||b);
System.out.println(c);
У Java логічний та числові типи не можна перетворювати один до одного.
Оператори порівняння
Більшість операторів порівняння застосовуються до числових значень. Все це бінарні оператори, які мають два числові аргументи, але повертають логічне значення.
>
- Оператор "більше".
>=
- Оператор «більше або одно».
<
- Оператор "менше".
<=
- Оператор «менше або одно».
!=
- Оператор "не рівно".
==
- Оператор еквівалентності (рівності).
Останні два оператори можуть застосовуватися як для числових значень, а й, наприклад, для логічних. Приклади:
boolean m;
m = 5 >= 4;
m = 5 != 5 || false;
boolean w;
w = m == false;
System.out.println(w);
Дуже важливо не плутати оператора еквівалентності з операцією присвоєння. У виразах, де зустрічаються оператори різних типів, спочатку виконуються арифметичні операції, потім операції порівняння, потім логічні операції та в останню чергу привласнення.
Умовний оператор if
Оператор
if
забезпечує виконання чи пропуск інструкції залежно від зазначеної логічної умови. Якщо умова є істинною, то
інструкція виконується.
if (умова) инструкция;
На місці інструкції може бути як звичайна інструкція (одна команда), так і складова інструкція (блок, що містить кілька команд, у тому числі інші умовні оператори). Приклади (якщо в якості значень змінних буде вказано нуль, то поділ не буде вироблятися і його результат не виводитиметься на екран):
int a = 25;
if (a != 0) System.out.println( 100/a );
int b = 25;
if (b != 0) {
System.out.println( 100/b );
}
Не дивлячись на те, що код у першому прикладі виглядає компактнішим, тільки у другому прикладі можна було б виконати декілька інструкцій у разі істинності умови. Оператор
if
має формат з додатковою частиною
else
:
if (умова)
инструкция1;
else
инструкция2;
У разі істинності
умови виконується проста чи складова
інструкція1 , а у разі помилковості проста чи складова
інструкція2 . Приклад:
int a = 0;
if (a != 0) System.out.println( 100/a );
else System.out.println("На нуль делить нельзя");