Când vorbim despre precedență în Java, operatorul este primul în minte. Există anumite reguli definite în Java pentru a specifica ordinea în care sunt evaluați operatorii dintr-o expresie. Prioritatea operatorului este un concept de determinare a grupului de termeni dintr-o expresie. Precedența operatorului este responsabilă pentru evaluarea expresiilor. În Java , paranteze() și indice de matrice[] au cea mai mare prioritate în Java. De exemplu, Adunarea și Scăderea au o prioritate mai mare decât operatorii Deplasare la stânga și Deplasare la dreapta.
Mai jos este un tabel definit în care operatorul cu cea mai mică precedență apare în partea de sus.
Precedenta | Operator | Tip | Asociativitatea |
---|---|---|---|
1) | = += -= *= /= %= | Misiune Sarcina suplimentară Atribuirea de scădere Sarcina de înmulțire Atribuirea diviziei Atribuirea modulului | De la dreapta la stanga |
2) | ? : | Condițional ternar | De la dreapta la stanga |
3) | || | SAU logic | De la stânga la dreapta |
4) | && | ȘI logic | De la stânga la dreapta |
5) | | | SAU inclusiv pe biți | De la stânga la dreapta |
6) | ^ | SAU exclusiv pe biți | De la stânga la dreapta |
7) | & | ȘI pe biți | De la stânga la dreapta |
8) | != == | Relațional nu este egal cu Relațional este egal cu | 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 |
10) | >> << >>> | Deplasare la dreapta pe biți cu extensie de semn Deplasare la stânga pe biți Deplasare la dreapta pe biți cu extensie zero | De la stânga la dreapta |
unsprezece) | - + | Scădere Plus | De la stânga la dreapta |
12) | * / % | Multiplicare Divizia Modulul | De la stânga la dreapta |
13) | - + ~ ! ( tip) | Minus unar Plus unar Complement unar pe biți Negație logică unară Tipografia unară | De la dreapta la stanga |
14) | ++ -- | Post-increment unar Post-decrementare unară | De la dreapta la stanga |
cincisprezece) | · () [] | Operator punct Paranteze Indice matrice | De la stânga la dreapta |
Ordinea de prioritate
Când doi operatori au în comun un singur operand, operatorul care are cea mai mare prioritate merge primul. De exemplu, x + y * z este tratat ca x + (y * z), în timp ce x * y + z este tratat ca (x * y) + z deoarece operatorul * are cea mai mare prioritate în comparație cu operatorul +.
seleniu
Asociativitatea
Asociativ este un concept legat de operatorii aplicați atunci când într-o expresie vin doi operatori cu aceeași precedență. Conceptul de asociativitate este foarte util pentru a pleca din această situație. Să presupunem că avem o expresie a + b - c (operatorii + și - au aceeași prioritate) , iar această expresie va fi tratată ca (a + (b - c)) deoarece acești operatori sunt asociativi de la dreapta la stânga. Pe de altă parte, a+++--b+c++ va fi tratat ca ((a++)+((--b)+(c++))) deoarece operatorii unari post-increment și decrementare sunt asociativi de la dreapta la stânga.
Un exemplu este definit mai jos pentru a înțelege cum este evaluată o expresie folosind ordinea de precedență și asociativitatea?
Expresie: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
Soluţie:
1) În expresia de mai sus, operatorul cu cea mai mare prioritate este () . Deci, paranteza merge prima și calculează prima.
listă dublu legată
x = 4 / 2 + 8 * 4 - 7 % 3
2) Acum, /, * și % operatorii au aceeași prioritate și cea mai mare față de + și - Aici, folosim conceptul de asociativitate pentru a le rezolva. Asociația acestor operatori este de la stânga la dreapta. Asa de, / operatorul merge mai întâi și apoi * și % simultan.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) Acum, + și - ambii operatori au, de asemenea, aceeași prioritate, iar asociativitatea acestor operatori nu cumva spre dreapta. Asa de, + operatorul va merge primul și apoi - va merge.
verificați nul în java
x = 34 - 1
x = 33
HighestPrecedence.java
//import classes import java.util.*; //creating HighestPrecedence class to evaluate the expression public class HighestPrecedence { //main() method starts public static void main(String[] args) { //initialize variables with default values int x = 2; int y = 5; int z = 12; //calculating exp1, exp2, and exp3 int exp1 = x +(z/x+(z%y)*(z-x)^2); int exp2 = z/x+y*x-(y+x)%z; int exp3 = 4/2+8*4-(5+2)%3; //printing the result System.out.println(exp1); System.out.println(exp2); System.out.println(exp3); } }
Ieșire