Во время выполнения операций можно задавать приоритет выполнения с помощью скобок (операции в скобках выполняются раньше). Если скобки отсутствуют, выполняются сначала более приоритетные операции. Ниже приведена таблица приоритета выполнения операций.
Оператор | Описание | Ассоциативность |
++, — | постинкремент, постдекремент | справа налево |
++, —, +, -, ~, ! | преинкремент, предекремент, унарный плюс, унарный минус, поразрядное дополнение, булево «не» | справа налево |
*, /, % | умножение, деление, остаток от деления | слева направо |
+, — | сложение, вычитание | слева направо |
<<, >>, >>> | сдвиг влево, сдвиг вправо, беззнаковый сдвиг вправо | слева направо |
<, >, <=, >=, instanceof | меньше, больше, меньше или равно, больше или равно, сравнить тип | слева направо |
==, != | равно, не равно | слева направо |
& | битовое «и» | слева направо |
^ | исключающее «или» | слева направо |
| | битовое «или» | слева направо |
&& | логическое «и» | слева направо |
|| | логическое «или» | слева направо |
?: | тернарный оператор | слева направо |
=, +=, -=,*=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= | операторы присваивания | справа налево |
Чем выше в таблице расположен оператор, тем больше у него приоритет. В выражении ++x+y*z сперва выполнится инкремент, затем умножение, затем сложение (выражение можно представить в виде (++x)+(y*z) ).
1 2 3 4 5 6 7 8 9 10 11 12 |
public class JavaApplication1 { public static void main(String[] args) { int x = 1; int y = 2; int z = 3; int a = ++x + y * z; //В консоли будет 8. System.out.println(a); } } |
Операции, которые расположены на одном уровне в таблице, выполняются согласно ассоциативности выполнения (слева направо или справа налево). То есть, при ассоциативности слева направо сперва выполняются операции, «написанные» в выражении левее. Например, в выражении 7%3*2 сначала выполняется получение остатка от деления, затем — умножение (иначе ответ был бы равен единице).
1 2 3 4 5 6 7 8 9 10 11 12 |
public class JavaApplication1 { public static void main(String[] args) { int x = 7; int y = 3; int z = 2; int a = x % y * z; //В консоли видим 2. System.out.println(a); } } |