Главная » Java » Логические операторы Java

0

 

Логические операторы позволяют сочетать в единое целое несколько булевых выражений и обеспечивают поддержку общих операций булевой алгебры.

 

Оператор &, логическое И (AND) , возвращает true, если и только если оба операнда равны true, а оператор |, логическое включающее ИЛИ (OR), дает в результате выполнения значение true только в том случае, если любой из его операндов равен true. Оператор ^, логическое исключающее ИЛИ (XOR) , возвращает true, если любой из операндов (но не оба одновременно) равен true; это аналогично условию неравенства двух булевых операндов, поэтому рассмотренный выше фрагмент кода можно переписать следующим образом:

if ((х < 0) ^ (y <0))

 differentsign();

 else

sameSign();

Унарный оператор !, логическое отрицание, обращает (инвертирует) значение операнда, тaк что !true равно false, а !false – true.

Булевы значения проверяются непосредственно: если, например, x и y – переменные типа boolean, то код

if (x || !y) {

 / / …

}

 

кaк нетрудно убедиться, гораздо проще для понимания, нежели равноценный,  более многословный

Операторы &&, условное И (AND) , и ||, условное ИЛИ (OR), выполняют те же функции, что и простые операторы & и ||, но позволяют избежать необходимости про верки правого операнда, если истинность всего выражения уже установлена на основании значения левого операнда. Рассмотрим пример:

if (w && х) { // Внешнее условие if

if (у II z) { // Внутреннее условие

if // … Тело внутреннего условия if

}

}

Внутреннее условие if проверяется только в том случае, если обе переменные, w и х, во внешнем условии равны true. Если w равно false, х не будет Проверяться вовсе, поскольку уже ясно, что значение всего выражения заведомо равно false. Тело внутреннего условного оператора if выполняется, если у или z равны true. Как и в предыдущем случае, если у равно true, значение z проверяться не будет, поскольку понятно, что результат вычисления выражения в целом равен true.

Это свойство используется в многочисленных ситуациях и позволяет добиться большей эффективности и надежности кода. Рассмотрим пример:

if (0 <= ix && ix < array.length && array[ix] != 0) {

//  …

}

В первую очередь выполняется проверка принадлежности значения индекса допустимому диапазону. Обращение к элементу массива array[ix] осуществляется только в том случае, если значение iх корректно само по себе. Оператора условного исключающего ИЛИ (XOR) не существует, поскольку истинность выражения с XOR зависит от значений обоих операндов.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии