Скачиваний:
62
Добавлен:
05.07.2021
Размер:
94.13 Кб
Скачать

Преобразование и приведение типов. Автоматическое приведение и продвижение типов в выражениях. Логические выражения. Арифметические операции

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

+ Сложение (а также унарный плюс) 

- Вычитание (а также унарный минус) 

* Умножение 

/ Деление 

% Деление по модулю 

++ Инкремент (приращение на 1) 

+= Сложение с присваиванием 

-= Вычитание с присваиванием 

*= Умножение с присваиванием

/= Деление с присваиванием 

%= Деление по модулю с присваиванием 

-- Декремент (отрицательно приращение на 1)

Операнды арифметических операций должны иметь числовой тип. Арифметические операции нельзя выполнять над логическими типами данных, но допускается над типом char, посколько в Java этот тип по существу является разновидностью типа int.

Логические операции

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

& Логическая операция И 

| Логическая операция ИЛИ 

^ Логическая операция исключающее ИЛИ 

|| Укороченная логическая операция ИЛИ 

&& Укороченная логическая операция И 

! Логическая унарная операция НЕ 

&= Логическая операция И с присваиванием 

|= Логическая операция ИЛИ с присваиванием 

^= Логическая операция исключающее ИЛИ с присваиванием 

== Равенство 

!= Неравенство 

? : Тернарная условная операция типа если…, то …, иначе

В языке Java предоставляются. две любопытные логические операции, отсутствующие во многих других языках программирования. Эти вторые версии логических операций И и ИЛИ обычно называются укороченными логическими операциями. Результат выполнения укороченной логической операции ИЛИ равен true, когда значение операнда А равно true независимо от значения операнда В. Аналогично результат выполнения укороченной логической операции И равен false, когда значение операнда А равно false независимо от значения операнда В. При использовании форм || и && этих операторов вместо форм | и & в программе нa Java не будет вычисляться значение правого операнда, если результат выражения можно определить по значению только левого операнда. Этим обстоятельством очень удобно пользоваться в тех случах, когда значение правого операнда зависит от значения левого. 

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

if(denom ! =0 && num / denom > 10)

Предшествование операций

Предшествование (от высшего к низшему) операций в Java приведено в таблице на экране. Операции, находящиеся в одном ряду таблицы, имеют одинаковое предшествование. Операции с двумя операндами имеют порядок вычисления слева направо (за исключением операции присваивания, которая выполняется справа налево). Формально скобки [] и (), а также точка (.) считаются разделителями, но они мог служить и в качестве операций. Именно в этом качестве они имеют наивысшее предшествование. Обратите также внимание на операцию "стрелка" (->), которая была внедрена в версии JDК 8 и применяется в лямбда-выражениях.

Наивысшее предшествование 

[], (), . круглые скобки, квадратные скобки, точка 

++ (постфиксная операция), -- (постфиксная операция) 

++ (префиксная операция), -- (префиксная операция), ~, !, + (унарная операция), (приведение типов) 

*, /, % 

+, -, >>, >>>, << 

>, >=, <, <=, instanceof 

==, != 

&&

|| 

? :

 -> (стрелка, JDK 8, лямбда-выражения )

=

Наинизшее предшествование

Круглые скобки повышают предшествование заключенных в них операций. Нередко это требуется для получения необходимого результата.