Предимство на Java оператора

Приоритетът на оператора определя реда, в който се оценяват операторите в израз.

Преди да започнете да четете тази статия, трябва да имате основни познания за Java Operators.

Сега погледнете изявлението по-долу:

 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

Ако израз има два оператора с подобен приоритет, изразът се оценява според неговата асоциативност (или отляво надясно, или отдясно наляво). Да вземем пример.

 a = b = c;

Тук стойността на c се присвоява на променлива b. Тогава стойността на b се присвоява на променлива a. Защо? Това е така, защото асоциативността на = оператора е отдясно наляво.

Таблицата по-долу показва асоциативността на Java операторите заедно с тяхната асоциативност.

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

Не е нужно да запомняте всичко тук. През повечето време предимството и асоциативността на операторите имат смисъл сами по себе си. Винаги можете да се върнете към тази статия за справка, когато се съмнявате. Също така можете да използвате скоби, ако смятате, че това прави вашия код по-лесен за разбиране.

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