Булевские логические операции. Замыкающие логические операции. Операция присваивания. Булевские логические операции
Булевские логические операции Описанные в этом разделе логические операции работают только с операндами типа 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 применяются те же логические правила, что и к битам. Замыкающие логические операции Java предоставляет две интересные булевских операции, не встречающиеся во многих других языках программирования. Это вторые версии булевских операций AND и OR, получившие название замыкающих логических операций. Как видно из ранее приведенной таблицы, результат выполнения операции OR равен true, когда значение операнда A равно true, независимо от значения операнда B. Аналогично, результат выполнения операции AND равен false, когда значение операнда A равно false, независимо от значения операнда B. При использовании форм || и & & этих операций вместо | и & программа Java не будет вычислять значение правого операнда, если результат выражения можно определить по значению одного левого операнда. Это свойство очень удобно в тех случаях, когда значение правого операнда зависит от значения левого. Например, следующий фрагмент кода демонстрирует преимущество применения замыкающей логической операций для выяснения допустимости операции деления перед вычислением ее результата:
if (denom! = 0 & & num / denom > 10) Благодаря применению замыкающей формы операции AND (& & ) исключается риск возникновения исключения времени выполнения в случае равенства знаменателя (denom) нулю. Если бы эта строка кода была записана с применением одинарного символа & операции AND, программа вычисляла бы обе части выражения, что приводило бы к исключению времени выполнения при равенстве значения denom нулю. Замыкающие формы операций AND и OR принято применять в тех случаях, когда требуется использование операций булевской логики, а односимвольные версии – исключительно для побитовых операций. Однако существуют исключения из этого правила. Например, рассмотрим следующий оператор: if(c==1 & e++ < 100) d = 100; В данном случае одиночный символ & гарантирует применение операции инкремента к значению e независимо от равенства 1 значения c. Операция присваивания Мы использовали операцию присваивания, начиная с главы 2. Теперь пора рассмотреть эту операцию формально. Символом операции присваивания служит одиночный знак равенства, =. В Java операция присваивания работает аналогично тому, как она работает во многих компьютерных языках. Она имеет следующую общую форму:
переменная = выражение; В этом операторе тип переменной должен соответствовать типу выражения. Операция присваивания обладает одной интересной особенностью, с которой вы, возможно, еще не знакомы: она позволяет создавать цепочки присваиваний. Например, рассмотрим следующий фрагмент кода: int x, y, z; x = y = z = 100; В этом фрагменте кода единственный оператор устанавливает значения трех переменных x, y и z равными 100. Это обусловлено тем, что = – операция, которая использует значение правого выражения. Таким образом, значение выражения z=100 равно 100, которое затем присваивается переменной y, а затем – переменной x. Использование “цепочки присваивания” – удобный способ установки общего значения группы переменных. Операция? Синтаксис Java содержит специальную тернарную операцию, которой можно заменять определенные типы операторов if-then-else. Это операция?. Вначале она может казаться несколько непонятной, но со временем вы убедитесь в ее исключительной эффективности. Эта операция имеет следующую общую форму: выражение1? выражение2: выражение3 Здесь выражение1 – любое выражение, приводящее к значению типа boolean. Если значение выражения1 – true, программа вычисляет значение выражения2. В противном случае программа вычисляет значение выражения3. Результат выполнения операции? равен значению вычисленного выражения. И выражение2, и выражение3 должны возвращать значение одного и того же типа, которым не может быть тип void. Следующий пример программы демонстрирует применение операции?. Эта программа служит для получения абсолютного значения переменной. // Демонстрация использования операции?. class Ternary { public static void main(String args[]) { int i, k; i = 10; k = i < 0? -i: i; // получение абсолютного значения переменной i System. out. print(" Абсолютное значение " ); System. out. println(i + " равно " + k); i = -10; k = i < 0? -i: i; // получение абсолютного значения переменной i System. out. print(" Абсолютное значение " ); System. out. println(i + " равно " + k); } } Эта программа генерирует следующий вывод: Абсолютное значение 10 равно 10 Абсолютное значение -10 равно 10
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|