В этих выражениях используются операнды целого или символьного типов, связанные круглыми скобками и знаками арифметических и побитовых операций.
К арифметическим операциям относятся:
+ сложение 3 + 2 = 5
- вычитания 5 – 2 = 3
* умножение 3 * 2 = 6
/ деление нацело 5 / 3 = 1
% остаток от деления 5 % 3 = 2
5 % 2 = 1
5 % 1 = 0
5 % 5 = 0
2 % 3 = 2
++ инкремент x++ = x + 1
++x = x + 1
-- декремент x-- = x – 1
--x = x – 1
Как и в языке Си, в выражения целого типа языка Java могут входить и операнды символьного типа (char), при этом операции выполняются над кодами символьных констант, а результат может быть выражен или целым числом, или символом:
‘A’ + 3 = ‘D’
‘A’ + 3 = 68
‘a’ – 32 = ‘A’
‘a’ – 32 = 65
‘0’ + 1 = 49
‘0’ + 1 = ‘1’
Если в выражении целого типа встречаются операнды различных типов, то производится автоматическое преобразование типов к одному, самому длинному:
- если хотя бы один из операндов имеет тип long, то и другие преобразуются в операнды типа long, и результат будет иметь тоже тип long,
- во всех остальных случаях операнды преобразуются к типу int.
Побитовые операции выполняются над двоичными кодами операндов, над каждым разрядом кода отдельно. К ним относятся:
&И 5&3 = 1 101 = 5
&
011 = 3
___
001 = 1
|ИЛИ 5|3 = 7 101 = 5
|
011 = 3
___
111 = 7
^ исключающее ИЛИ 5^3 = 6 101 = 5
^
011 = 3
___
110 = 6
Приоритет выполнения операций:
- изменение знака
++ инкремент
-- декремент
Эти операции имеют наивысший приоритет и выполняются в выражениях справа налево.
За ними следуют операции:
*, /, % операции типа умножения
+, - операции типа сложения
& побитовое И
^ исключающее ИЛИ
| побитовое ИЛИ
Эти операции выполняются в выражениях слева направо. Порядок вычислений может быть изменен с помощью круглых скобок.