Precedența operatorului Java

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 Java
Operatori 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 Java
Operatori 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.

Articole interesante...