Логические операции
Логические операции:
отрицание (NOT)
!
(обозначается восклицательным знаком);
конъюнкция (AND)
&
(амперсанд);
дизъюнкция (OR)
|
(вертикальная черта);
исключающее ИЛИ (XOR)
^
(каре).
Они выполняются над логическими данными, их результатом будет тоже логическое значение
true
или
false
. Про них можно ничего не знать, кроме того, что представлено в табл. 1.1.
Таблица 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 используются именно сокращенные логические операции.