Логические операции
Таблица 1.1. Логические операции
b1 |
b2
|
!b1 |
b1&b2 |
b1|b2 |
b1^b2 |
true |
true |
false |
true |
true |
false |
true |
false |
false |
false |
true |
true |
false |
true |
true |
false |
true |
true |
false |
false |
true |
false |
false |
false |
Словами эти правила можно выразить так:
- отрицание меняет значение истинности;
- конъюнкция истинна, только если оба операнда истинны;
- дизъюнкция ложна, только если оба операнда ложны;
- исключающее ИЛИ истинно, только если значения операндов различны.
Замечание
Если бы Шекспир был программистом, фразу "То be or not to be" он написал бы так: 2b | ! 2b.
Кроме перечисленных четырех логических операций есть еще две логические операции сокращенного вычисления:
- сокращенная конъюнкция (conditional-AND) && ;
- сокращенная дизъюнкция (conditional-OR) || .
Удвоенные знаки амперсанда и вертикальной черты следует записывать без пробелов.
Правый операнд сокращенных операций вычисляется только в том случае, если от него зависит результат операции, т. е. если левый операнд конъюнкции имеет значение true , или левый операнд дизъюнкции имеет значение false .
Это правило очень удобно и ловко используется, например, можно записывать выражения (n != 0) && (m/n > 0.001) или (n == 0) || (m/n > 0.001) не опасаясь деления на нуль.
Замечание
Практически всегда в Java используются именно сокращенные логические операции.