Читать «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.
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, определенных в
2. При тех же определениях вычислите выражение (!b || bb) && (bb Л b).
Целые типы
Спецификация языка Java, JLS, определяет разрядность (количество байтов, выделяемых для хранения значений типа в оперативной памяти) каждого типа. Для целых типов она приведена в табл. 1.2. В таблице указан также диапазон значений каждого типа, получаемый на процессорах архитектуры Pentium.