Опубликован: 27.09.2006 | Уровень: для всех | Доступ: свободно
Лекция 3:

Высказывания и предикаты

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Приоритеты и ассоциативность операторов языка Java

При вычислении значения выражения в языке Java важны не только приоритеты, но и ассоциативность операторов.

Определение 3.20. Оператор @ является левоассоциативным, если выражение a @ b @ c вычисляется, как (a @ b) @ c ; правоассоциативным, если оно эквивалентно a @ (b @ c) ; неассоциативным — если запись a @ b @ c не имеет смысла.

В этом определении символ @ означает любой из бинарных операторов языка.

Использование круглых скобок для группировки всегда позволяет изменить порядок вычислений, так как выражения в скобках вычисляются в первую очередь. Иногда даже формально лишние скобки в выражении полезны — они облегчают правильное восприятие.

В таблице 3.5 все операторы языка Java разбиты на группы с одинаковым приоритетом (операторы с приоритетом 1 выполняются в первую очередь), левоассоциативность обозначена символом \longrightarrow, а правоассоциативность — символом \longleftarrow.

Таблица 3.5. Приоритеты и ассоциативность операторов
Пр-т Оператор Тип опер. Асс-ть Операция
1 ++ числовой \longleftarrow пре- и постинкремент
-- числовой \longleftarrow пре- и постдекремент
+, - числовой \longleftarrow унарныe плюс и минус
~ целый \longleftarrow побитовое дополнение
! логический \longleftarrow логическое отрицание
(type) любой \longleftarrow преобразование типа
2 *, /, % числовой \longrightarrow умножение, деление и остаток
3 +, - числовой \longrightarrow сложение и вычитание
+ строковый \longrightarrow конкатенация строк
4 << целый \longrightarrow сдвиг влево
>> целый \longrightarrow сдвиг вправо с размножением знакового бита
>>> целый \longrightarrow сдвиг вправо с размножением нуля
5 <, <= числовой \longrightarrow меньше, меньше или равно
>, >= числовой \longrightarrow больше, больше или равно
instanceof объект,тип \longrightarrow сравнение типов
6 == простой \longrightarrow равенство значений простых типов
!= простой \longrightarrow неравенство значений простых типов
== объект \longrightarrow равенство ссылок на объекты
!= объект \longrightarrow неравенство ссылок на объекты
7 & целый \longrightarrow побитовое И
& логический \longrightarrow логическое И
8 ^ целый \longrightarrow побитовое исключающее Или
^ логический \longrightarrow логическое исключающее Или
9 | целый \longrightarrow побитовое Или
| логический \longrightarrow логическое Или
10 && логический \longrightarrow условное И
11 || логический \longrightarrow условное Или
12 ?: логический, любой, любой \longleftarrow оператор условия
13 = любой \longleftarrow присваивание, присваивание с операцией
*=, /=, %=
+=, -=
<<=, >>=
>>>=, &=
^=, |=

С логическими и условными операторами мы уже знакомы, семантика арифметических операторов объясняется в следующем параграфе, а с оператором instanceof мы разберемся в третьей главе книги.

Задачи для самостоятельного решения

Задача 3.6.Докажите, что выражение ((e_1\land (e_2\lor e_3)) =
((e_1\land e_2)\lor (e_1\land e_3))) является предикатом.

Задача 3.7.Докажите, что выражение ((a\lor a) — не предикат.

Задача 3.8.Изобразите деревья вывода для каждого из законов эквивалентности.

Задача 3.9.Покажите, что все законы эквивалентности являются тавтологиями.

Задача 3.9.Решите задачу о банке с кофейными зернами (см. задачу 3.1)

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Анастасия Халудорова
Анастасия Халудорова
подавляющее большиство фукций на пространстве последовательостей?
екатерина яковлева
екатерина яковлева
как получить сертификат,что для этого нужно?
Анна Круглова
Анна Круглова
Россия, Караганда
Енот Полоскун
Енот Полоскун
Россия