Приоритет оператора Java

Приоритет операторов определяет порядок, в котором оцениваются операторы в выражении.

Прежде чем вы начнете читать эту статью, вы должны иметь базовые знания об операторах Java.

Теперь взгляните на утверждение ниже:

 int myInt = 12 - 4 * 2;

В чем будет ценность myInt? Будет (12 - 4)*2, то есть 16? Или будет 12 - (4 * 2), то есть 4?

Когда два оператора используют общий операнд, 4в этом случае первым работает оператор с наивысшим приоритетом.

В Java приоритет *выше, чем у -. Следовательно, умножение выполняется перед вычитанием, и значение myInt будет равно 4.

Таблица приоритета операторов

В таблице ниже перечислены приоритеты операторов в Java; чем выше он отображается в таблице, тем выше его приоритет.

Приоритет оператора Java
Операторы Приоритет
постфиксное приращение и декремент ++ --
приращение и уменьшение префикса, а также унарный ++ -- + - ~ !
мультипликативный * / %
добавка + -
сдвиг << >> >>>
реляционный < > <= >= instanceof
равенство == !=
побитовое И &
побитовое исключающее ИЛИ ^
побитовое ИЛИ |
логическое И &&
логическое ИЛИ ||
тройной ? :
назначение = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Пример: приоритет оператора

 class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )

Выход :

 2

Приоритет оператора префикса ++выше, чем у -оператора вычитания. Следовательно,

 результат = a - ++ c - ++ b;

эквивалентно

 результат = a - (++ c) - (++ b);

При работе с несколькими операторами и операндами в одном выражении вы можете использовать круглые скобки, как в приведенном выше примере, для ясности. Сначала вычисляется выражение в круглых скобках.

Ассоциативность операторов в Java

Если в выражении есть два оператора с одинаковым приоритетом, выражение оценивается в соответствии с его ассоциативностью (слева направо или справа налево). Возьмем пример.

 а = б = с;

Здесь значение c присваивается переменной b. Затем переменной a присваивается значение b. Зачем? Это потому, что ассоциативность оператора = находится справа налево.

В таблице ниже показана ассоциативность операторов Java вместе с их ассоциативностью.

Приоритет и ассоциативность операторов Java
Операторы Приоритет Ассоциативность
постфиксное приращение и декремент ++ -- слева направо
приращение и уменьшение префикса, а также унарный ++ -- + - ~ ! справа налево
мультипликативный * / % слева направо
добавка + - слева направо
сдвиг << >> >>> слева направо
реляционный < > <= >= instanceof слева направо
равенство == != слева направо
побитовое И & слева направо
побитовое исключающее ИЛИ ^ слева направо
побитовое ИЛИ | слева направо
логическое И && слева направо
логическое ИЛИ || слева направо
тройной ? : справа налево
назначение = += -= *= /= %=
&= ^= |= <<= >>= >>>=
справа налево

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

Интересные статьи...