Java 7 | страница 26
В языке 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.
Таблица 1.2. Целые типы | ||
---|---|---|
Тип | Разрядность(байт) | Диапазон |
byte | 1 | От -128 до 127 |
short | 2 | От -32 768 до 32 767 |
int | 4 | От -2 147 483 648 до 2 147 483 647 |
long | 8 | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |