logo

Cea mai mare prioritate în Java

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.

Cea mai mare prioritate în Java

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

Cea mai mare prioritate în Java