Приоритет оператора одређује редослед оцењивања оператора у изразу.
Пре него што почнете да читате овај чланак, требало би да имате основно знање о Јава оператерима.
Сада погледајте изјаву испод:
инт миИнт = 12 - 4 * 2;
Која ће бити вредност миИнт? Да ли ће бити (12 - 4)*2
, то јест 16
? Или ће бити 12 - (4 * 2)
, то јест 4
,?
Када два оператора деле заједнички операнд, 4
у овом случају се прво оперише оператором са највећим приоритетом.
У Јави је приоритет од *
већи од -
. Дакле, множење се врши пре одузимања, а вредност миИнт биће 4.
Табела приоритета оператора
Табела испод наводи предност оператора у Јави; што се више појављује у табели, то је већи његов приоритет.
Предност Јава оператораОператори | Предност |
---|---|
постфик повећање и смањење | ++ -- |
прираштај и декремент префикса и унарни | ++ -- + - ~ ! |
мултипликативни | * / % |
адитив | + - |
смена | << >> >>> |
релациони | < > <= >= 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
Приоритет оператора префикса ++
је већи од -
оператора одузимања. Стога,
резултат = а - ++ ц - ++ б;
је еквивалентно са
резултат = а - (++ ц) - (++ б);
Када се ради о више оператора и операнда у једном изразу, за прегледност можете да користите заграде као у горњем примеру. Прво се израчунава израз у загради.
Асоцијативност оператора у Јави
Ако израз има два оператора са сличним приоритетом, израз се процењује према његовој асоцијативности (било лево надесно, било здесна налево). Узмимо пример.
а = б = ц;
Овде је вредност ц додељена променљивој б. Тада се променљивој а додељује вредност б. Зашто? То је зато што је асоцијативност = оператора здесна налево.
Табела у наставку приказује асоцијативност Јава оператора заједно са њиховом асоцијативношћу.
Предност и асоцијативност Јава оператораОператори | Предност | Асоцијативност |
---|---|---|
постфик повећање и смањење | ++ -- | с лева надесно |
прираштај и декремент префикса и унарни | ++ -- + - ~ ! | десна на лево |
мултипликативни | * / % | с лева надесно |
адитив | + - | с лева надесно |
смена | << >> >>> | с лева надесно |
релациони | < > <= >= instanceof | с лева надесно |
једнакост | == != | с лева надесно |
битни И. | & | с лева надесно |
битно ексклузивно ИЛИ | ^ | с лева надесно |
битовно инклузивно ИЛИ | | | с лева надесно |
логично И | && | с лева надесно |
логично ИЛИ | || | с лева надесно |
троструко | ? : | десна на лево |
задатак | = += -= *= /= %= &= ^= |= <<= >>= >>>= | десна на лево |
Овде не треба све да памтите. Већину времена предност и асоцијативност оператора имају смисла саме по себи. Увек се можете вратити овом чланку ради референци када сумњате. Такође, можете да користите заграде ако мислите да ваш код чини лакшим за разумевање.