Prioritatea operatorului determină ordinea în care sunt evaluați operatorii dintr-o expresie.
Înainte de a începe să citiți acest articol, ar trebui să aveți cunoștințe de bază despre operatorii Java.
Acum, aruncați o privire la afirmația de mai jos:
int myInt = 12 - 4 * 2;
Care va fi valoarea myInt? Va fi (12 - 4)*2
, adică 16
? Sau va fi 12 - (4 * 2)
, adică 4
?
Când doi operatori împărtășesc un operand comun, 4
în acest caz, este operat primul operatorul cu cea mai mare prioritate.
În Java, prioritatea lui *
este mai mare decât cea a -
. Prin urmare, înmulțirea se efectuează înainte de scădere, iar valoarea myInt va fi 4.
Tabelul de precedență al operatorului
Tabelul de mai jos prezintă prioritatea operatorilor din Java; cu cât apare mai sus în tabel, cu atât este mai mare prioritatea sa.
Precedența operatorului JavaOperatori | Precedenta |
---|---|
creșterea și descreșterea postfix | ++ -- |
prefix increment și decrement și unar | ++ -- + - ~ ! |
multiplicativ | * / % |
aditiv | + - |
schimb | << >> >>> |
relațional | < > <= >= instanceof |
egalitate | == != |
bitologic ȘI | & |
OR bit exclusiv | ^ |
incluziv bit sau SAU | | |
logic ȘI | && |
OR logic | || |
ternar | ? : |
misiune | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
Exemplu: Precedența operatorului
class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )
Ieșire :
2
Prioritatea operatorului prefixului ++
este mai mare decât cea a -
operatorului de scădere. Prin urmare,
rezultat = a - ++ c - ++ b;
este echivalent cu
rezultat = a - (++ c) - (++ b);
Când aveți de-a face cu mai mulți operatori și operanzi într-o singură expresie, puteți utiliza paranteze ca în exemplul de mai sus pentru claritate. Expresia din paranteze este evaluată mai întâi.
Asociativitatea operatorilor în Java
Dacă o expresie are doi operatori cu precedență similară, expresia este evaluată în funcție de asociativitatea sa (fie de la stânga la dreapta, fie de la dreapta la stânga). Să luăm un exemplu.
a = b = c;
Aici, valoarea lui c este atribuită variabilei b. Apoi, valoarea lui b este atribuită variabilei a. De ce? Acest lucru se datorează faptului că asociativitatea operatorului = este de la dreapta la stânga.
Tabelul de mai jos prezintă asociativitatea operatorilor Java împreună cu asociativitatea acestora.
Precedența și asociativitatea operatorului JavaOperatori | Precedenta | Asociativitate |
---|---|---|
creșterea și descreșterea postfix | ++ -- | de la stânga la dreapta |
prefix increment și decrement și unar | ++ -- + - ~ ! | de la dreapta la stanga |
multiplicativ | * / % | de la stânga la dreapta |
aditiv | + - | de la stânga la dreapta |
schimb | << >> >>> | de la stânga la dreapta |
relațional | < > <= >= instanceof | de la stânga la dreapta |
egalitate | == != | de la stânga la dreapta |
bitologic ȘI | & | de la stânga la dreapta |
OR bit exclusiv | ^ | de la stânga la dreapta |
incluziv bit sau SAU | | | de la stânga la dreapta |
logic ȘI | && | de la stânga la dreapta |
OR logic | || | de la stânga la dreapta |
ternar | ? : | de la dreapta la stanga |
misiune | = += -= *= /= %= &= ^= |= <<= >>= >>>= | de la dreapta la stanga |
Nu trebuie să memorezi totul aici. De cele mai multe ori, prioritatea și asociativitatea operatorilor au sens în sine. Puteți reveni oricând la acest articol pentru referință atunci când aveți dubii. De asemenea, puteți utiliza paranteze dacă credeți că vă face codul mai ușor de înțeles.