Вход/Регистрация
Основы программирования на Java
вернуться

Сухов С. А.

Шрифт:
4.4. Булевы логические операторы

Булевы логические операторы, перечень которых приведен в таблице 4.5, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.

Таблица 4.5. Таблица булевых логических операторов

№

Оператор

Результат

№

Оператор

Результат

1

&

логическое И (AND)

7

&=

И (AND) с присваиванием

2

|

логическое ИЛИ (OR)

8

=

ИЛИ (OR) с присваиванием

3

^

логическое исключающее ИЛИ (XOR)

9

^=

исключающее ИЛИ (XOR) с присваиванием

4

||

оператор OR быстрой оценки выражений (short circuit OR)

10

==

равно

5

&&

оператор AND быстрой оценки выражений (short circuit AND)

11

!=

не равно

6

!

логическое унарное отрицание (NOT)

12

? :

тернарный оператор if-then-else

Логические булевы операторы AND (И), OR (ИЛИ) и XOR (исключающее ИЛИ) выполняют над логическими величинами те же операции, что и их аналоги из семейства битовой логики. Унарный оператор NOT (НЕ) инвертирует логическое значение. В таблице 4.6 показаны результаты воздействия логических операторов на различные комбинации значений операндов.

Таблица 4.6

A

В

OR

AND

XOR

NOT A

false

false

false

false

false

true

true

false

true

false

true

false

false

true

true

false

true

true

true

true

true

true

false

false

Существуют два дополнения к набору логических операторов. Это альтернативные версии операторов AND и OR, служащие для быстрой оценки логических выражений. Если первый операнд оператора OR имеет значение true, то независимо от значения второго операнда результатом операции будет величина true. Аналогично в случае оператора AND, если первый операнд — false, то значение второго операнда на результат не влияет — он всегда будет равен false. Если вы используете операторы & & и || вместо обычных форм & и |, то Java не производит оценку правого операнда логического выражения, если ответ ясен из значения левого операнда. Общепринятой практикой является использование операторов && и || практически во всех случаях оценки булевых логических выражений. Версии этих операторов & и | применяются только в битовой арифметике.

4.5. Тернарный оператор if-then-else

Общая форма оператора if-then-else такова:

Выражение1 ? Выражение2 : выражениеЗ

В качестве первого операнда — «выражение 1» — может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть «выражение2». Если же первый операнд равен false, то выполняется третий операнд — «выражениеЗ». Второй и третий операнды, то есть «выра- жение2» и «выражениеЗ», должны возвращать значения одного типа и не должны иметь тип void. В приведенной ниже программе этот оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.

class Ternary {

public static void main(String args[]) {

int a = 42;

int b = 2;

int с = 99;

int d = 0;

int e = (b == 0) ? 0 : (a / b);

int f = (d == 0) ? 0 : (c / d);

System.out.print("a = " + a);

System.out.print("b = " + b);

System.out.print("c = " + c);

System.out.print("d = " + d);

System.out.print("a / b = " + e);

System.out.println("c / d = " + f);

}

}

При выполнении этой программы исключительной ситуации деления на нуль не возникает, и выводятся следующие результаты:

a = 42

b = 2

c = 99

d = 0

a/b = 21

c/d = 0

4.6. Приоритеты операторов

В Java действует определенный порядок, или приоритет, операций. В элементарной алгебре умножение и деление имеют более высокий приоритет, чем сложение и вычитание. В программировании также приходится следить за приоритетами операций. В таблице 4.7. указаны в порядке убывания приоритеты всех операций языка Java.

Таблица 4.7. Таблица приоритетов всех операций

№

Высший

1

[] •

2

~ !

3

* / %

4

+ -

5

>> >>> <<

6

> >= < <=

7

== !=

8

&

9

^

10

|

11

&&

12

||

13

? :

14

= op=

Низший

В первой строке таблицы приведены три необычных оператора, о которых мы пока не говорили. Круглые скобки используются для явной установки приоритета. Квадратные скобки [] используются для индексирования переменной-массива. Оператор . (точка) используется для выделения элементов из ссылки на объект.

5. УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ

Управление выполнением (flow control) позволяет изменять последовательность выполнения фрагментов программы, выбирая в зависимости от состояния данных ту или иную ветвь кода. Ветвление, циклы и вызовы подпрограмм - это разновидности управления выполнением программы. Все наши программы до сих пор были полностью линейны - операторы выполнялись строго по порядку, один за другим. В более сложных программах часто требуется, чтобы в зависимости от условий выполнялись одни операторы, а другие при этом пропускались. Для управления выполнением программного кода в Java имеется несколько возможностей, основанных на использовании условных операторов.

  • Читать дальше
  • 1
  • ...
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: