Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 22

Ильдар Шаукатович Хабибуллин

boolean b = true, bb = false, bool2;

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

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

В языке Java реализованы четыре логические операции:

□ отрицание (NOT) — ! (обозначается восклицательным знаком);

□ конъюнкция (AND) — & (амперсанд);

□ дизъюнкция (OR) — | (вертикальная черта);

□ исключающее ИЛИ (XOR) — л (каре).

Они выполняются над логическими данными типа boolean, их результатом будет тоже логическое значение — 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

Словами эти правила можно выразить так:

□ отрицание меняет значение истинности;

□ конъюнкция истинна, только если оба операнда истинны;

□ дизъюнкция ложна, только если оба операнда ложны;

□ исключающее ИЛИ истинно, только если значения операндов различны.

ЗАМЕЧАНиЕ

Если бы Шекспир был программистом, фразу "To 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 используются именно сокращенные логические операции.

Упражнения

1. Для переменных b и bb, определенных в разд. "Логический тип" данной главы, найдите значение выражения b & bb && !bb | b.

2. При тех же определениях вычислите выражение (!b || bb) && (bb Л b).

Целые типы

Спецификация языка Java, JLS, определяет разрядность (количество байтов, выделяемых для хранения значений типа в оперативной памяти) каждого типа. Для целых типов она приведена в табл. 1.2. В таблице указан также диапазон значений каждого типа, получаемый на процессорах архитектуры Pentium.