În această secțiune, vom învăța operator prioritate în Java împreună cu exemple.
Ce este prioritatea operatorului?
The prioritatea operatorului reprezintă modul în care două expresii sunt legate între ele. Într-o expresie, determină gruparea operatorilor cu operanzi și decide cum va evalua o expresie.
În timpul rezolvării unei expresii, trebuie avute în vedere două lucruri, primul este a precedenta iar al doilea este asociativitatea .
Precedenta
Prioritatea este prioritatea pentru gruparea diferitelor tipuri de operatori cu operanzii lor. Are sens numai dacă o expresie are mai mult de un operator cu o prioritate mai mare sau mai mică. Operatorii cu prioritate mai mare sunt evaluați mai întâi. Dacă dorim să evaluăm mai întâi operatorii cu prioritate inferioară, trebuie să grupăm operanzii folosind paranteze și apoi să evaluăm.
Asociativitatea
Trebuie să urmărim asociativitatea dacă o expresie are mai mult de doi operatori cu aceeași precedență. Într-un astfel de caz, poate fi rezolvată fie o expresie de la stânga la dreapta sau de la dreapta la stanga, în consecinţă.
Tabelul de precedență al operatorului Java
Următorul tabel descrie precedența și asociativitatea operatorilor utilizați în Java.
Precedenta | Operator | Tip | Asociativitatea |
---|---|---|---|
cincisprezece | () [] · | Paranteze Indice matrice Selectarea membrilor | De la stânga la dreapta |
14 | ++ -- | Post-increment unar Post-decrementare unară | De la dreapta la stanga |
13 | ++ -- + - ! ~ (tip) | Pre-increment unar Pre-decrementare unară Plus unar Minus unar Negație logică unară Complement unar pe biți Distribuție de tip unar | De la dreapta la stanga |
12 | * / % | Multiplicare Divizia Modulul | De la stânga la dreapta |
unsprezece | + - | Plus Scădere | De la stânga la dreapta |
10 | << >> >>> | Deplasare la stânga pe biți Deplasare la dreapta pe biți cu extensie de semn Deplasare la dreapta pe biți cu extensie zero | De la stânga la dreapta |
9 | < <= > >= instanță de=> | Relațional mai puțin decât Relațional mai mic sau egal Relațional mai mare decât Relațional mai mare sau egal Comparație de tip (numai obiecte) | De la stânga la dreapta |
8 | == != | Relațional este egal cu Relațional nu este egal cu | De la stânga la dreapta |
7 | & | ȘI pe biți | De la stânga la dreapta |
6 | ^ | SAU exclusiv pe biți | De la stânga la dreapta |
5 | | | SAU inclusiv pe biți | De la stânga la dreapta |
4 | && | ȘI logic | De la stânga la dreapta |
3 | || | SAU logic | De la stânga la dreapta |
2 | ? : | Condițional ternar | De la dreapta la stanga |
1 | = += -= *= /= %= | Misiune Sarcina suplimentară Atribuirea de scădere Sarcina de înmulțire Atribuirea diviziei Atribuirea modulului | De la dreapta la stanga |
Notă: Cu cât numărul este mai mare, este cu prioritate.
Exemplu de prioritate a operatorului Java
Să înțelegem prioritatea operatorului printr-un exemplu. Luați în considerare următoarea expresie și ghiciți răspunsul.
1 + 5 * 3
S-ar putea să vă gândiți că răspunsul ar fi 18 dar nu așa. Deoarece operatorul de înmulțire (*) are o prioritate mai mare decât operatorul de adunare (+). Prin urmare, expresia evaluează mai întâi 5*3 și apoi evaluează expresia rămasă, adică 1+15. Prin urmare, răspunsul va fi 16 .
Să vedem un alt exemplu. Luați în considerare următoarea expresie.
x + y * z / k
În expresia de mai sus, operațiile * și / sunt efectuate înainte de + din cauza precedenței. y este înmulțit cu z înainte de a fi împărțit la k din cauza asociativității.