АБОБА. Справочник по программированию на Java Методическое пособие
Скачать 242.41 Kb.
|
Операции сравненияОперации сравнения определяют отношение одного операнда с другим. В частности, они определяют равенство и порядок следования. == Равно != Не равно > Больше < Меньше >= Больше или равно <= Меньше или равно Результат выполнения этих операций – значение типа boolean. Наиболее часто операции сравнения используют в выражениях, которые управляют оператором if и различными операторами цикла. В Java можно сравнивать значения любых типов, в том числе целые значения, значения с плавающей точкой, символы и булевские значения, используя проверку равенства == и проверку неравенства !=. Обратите внимание, что Java равенство обозначают двумя знаками “равно”, а не одним. (Одиночный знак “равно” – символ операции присваивания.) Сравнение с помощью операций упорядочения применимо только к числовым типам. То есть сравнение для определения того, какой из операндов больше или меньше другого, можно выполнять только для целочисленных операндов, операндов с плавающей точкой или символьных операндов. Как уже было отмечено, результат выполнения операции сравнения представляет собой значение типа boolean. Например, следующий фрагмент кода вполне допустим: int a = 4; int b = 1; boolean c = a < b; В данном случае результат выполнения операции a < b (который равен false) сохраняется в переменной c. Те читатели, которые знакомы с языками C/C++, должны обратить внимание на следующее. В программах на C/C++ следующие типы операторов встречаются очень часто: int done; // ... if(!done) ... // Допустимо в C/C++ if(done) ... // но не в Java. В Java-программе эти операторы должны быть записаны следующим образом: if(done == 0) ... // Это стиль Java. if(done != 0) ... Это обусловлено тем, что в Java определение значений “истинно” и “ложно” отличается от их определений в языках C/C++. В C/C++ истинным считается любое ненулевое значение, а ложным – ноль. В Java значения true (истинно) и false (ложно) – нечисловые значения, которые никак не сопоставимы с нулевым или ненулевым значением. Поэтому, чтобы сравнить значение с нулевым или ненулевым значением, необходимо явно использовать одну или несколько операций сравнения. Булевские логические операцииОписанные в этом разделе логические операции работают только с операндами типа boolean. Все логические операции с двумя операндами объединяют два значения типа boolean, образуя результирующее значение типа boolean. & Логическое AND (И) | Логическое OR (ИЛИ) ^ Логическое XOR (исключающее OR (ИЛИ)) || Замыкающее OR BookNew_JAVA-7.indb 107 02.06.2007 1:06:42 108 Часть I. Язык Java Операция Описание && Замыкающее AND ! Логическое унарное NOT (НЕ) &= AND с присваиванием |= OR с присваиванием ^= XOR с присваиванием == Равно != Не равно ?: Тернарная операция if-then-else Логические булевские операции &, | и ^ действуют применительно к значениям типа boolean точно так же, как они действуют по отношению к битам целочисленных значений. Логическая операция ! инвертирует булевское состояние: !true == false и !false == true. Ниже приведена программа, которая выполняет практически те же действия, что и пример программы BitLogic, представленный ранее, но она работает с логическими значениями типа boolean, а не с двоичными разрядами. // Демонстрация применения булевских логических операций. class BoolLogic { public static void main(String args[]) { boolean a = true; boolean b = false; boolean c = a | b; boolean d = a & b; boolean e = a ^ b; boolean f = (!a & b) | (a & !b); boolean g = !a; System.out.println(" a = " + a); System.out.println(" b = " + b); System.out.println(" a|b = " + c); System.out.println(" a&b = " + d); System.out.println(" a^b = " + e); System.out.println("!a&b|a&!b = " + f); System.out.println(" !a = " + g); } } Выполняя эту программу, легко убедиться, что к значениям типа boolean применяются те же логические правила, что и к битам. |