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

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

  • отрицание (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 используются именно сокращенные логические операции.