Иллюстрированный самоучитель по Java

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

Значения логического типа boolean возникают в результате различных сравнений, вроде 2 > 3, и используются, главным образом, в условных операторах и операторах циклов. Логических значении всего два: true (истина) и false (ложь). Это служебные слова Java. Описание переменных этого типа выглядит так:

boolean b = true, bb = false, bool2;

Над логическими данными можно выполнять операции присваивания, например, bool2 = true, в том числе и составные с логическими операциями; сравнение на равенство b == bb и на неравенство b!= bb, а также логические операции.

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

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

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.