logo

Højeste prioritet i Java

Når vi taler om forrang i Java, kommer operatøren først i tankerne. Der er visse regler defineret i Java for at angive den rækkefølge, som operatorerne i et udtryk evalueres i. Operatør forrang er et koncept til at bestemme gruppen af ​​udtryk i et udtryk. Operatørens forrang er ansvarlig for at evaluere udtrykkene. I Java , parentes() og Array subscript[] har den højeste forrang i Java. For eksempel har addition og subtraktion højere forrang end venstreskift- og højreskiftoperatorerne.

Højeste prioritet i Java

Nedenfor er en tabel defineret, hvor den laveste prioritetsoperator vises øverst i den.

Forrang Operatør Type Associativitet
1) =
+=
-=
*=
/=
%=
Opgave
Tillægsopgave
Subtraktionsopgave
Multiplikationsopgave
Divisionsopgave
Modulopgave
Højre til venstre
2) ? : Ternær betinget Højre til venstre
3) || Logisk ELLER Venstre til højre
4) && Logisk OG Venstre til højre
5) | Bitvis inklusive ELLER Venstre til højre
6) ^ Bitvis eksklusiv ELLER Venstre til højre
7) & Bitvis OG Venstre til højre
8) !=
==
Relationel er ikke lig med
Relationel er lig med
Venstre til højre
9) <
<=
>
>=
forekomst af
Relationel mindre end
Relationel mindre end eller lig
Relationel større end
Relationel større end eller lig
Typesammenligning (kun objekter)
Venstre til højre
10) >>
<<
>>>
Bitvist højreskift med tegnforlængelse
Bitvist venstreskift
Bitvist højreskift med nul forlængelse
Venstre til højre
elleve) -
+
Subtraktion
Tilføjelse
Venstre til højre
12) *
/
%
Multiplikation
Division
Modulus
Venstre til højre
13) -
+
~
!
(type)
Unær minus
Unært plus
Unært bitvis komplement
Unær logisk negation
Unær typecast
Højre til venstre
14) ++
--
Unær post-tilvækst
Unær post-dekrement
Højre til venstre
femten) ·
()
[]
Punktoperator
Parenteser
Array subscript
Venstre til højre

Forrangsrækkefølge

Når to operatører deler en enkelt operand, går operatøren med den højeste prioritet først. For eksempel behandles x + y * z som x + (y * z), hvorimod x * y + z behandles som (x * y) + z, fordi * operator har højeste forrang i sammenligning med + operator.

indsæt vandmærke i word

Associativitet

Associativ er et begreb relateret til de operatorer, der anvendes, når to operatorer med samme forrang kommer i et udtryk. Associativitetskonceptet er meget nyttigt at gå fra den situation. Antag, at vi har et udtryk a + b - c (+ og - operatorer har samme prioritet) , og dette udtryk vil blive behandlet som (a + (b - c)) fordi disse operatorer er højre til venstre-associative. På den anden side vil a+++--b+c++ blive behandlet som ((a++)+((--b)+(c++))) fordi de unære post-increment og decrement-operatorer er højre til venstre-associative.

Et eksempel er defineret nedenfor for at forstå, hvordan et udtryk evalueres ved hjælp af forrangsrækkefølge og associativitet?

Udtryk: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3

Løsning:

1) I ovenstående udtryk er den højeste prioritetsoperator () . Så parentesen går først og beregner først.

x = 4/2 + 8 * 4 - 7 % 3

2) Nu, /, * og % operatører har samme forrang og højest fra + og - Her bruger vi associativitetsbegrebet til at løse dem. Tilknytningen af ​​disse operatorer er fra venstre mod højre. Så, / operatør går først og derefter * og % samtidigt.

x = 2 + 8 * 4 - 7 % 3

x = 2 + 32 - 7 % 3

java-strengen er tom

x = 2 + 32 - 1

3) Nu, + og - operatører har begge også den samme forrang, og associativiteten af ​​disse operatører ikke til højre. Så, + operatør vil gå først, og derefter - vil gå.

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); } } 

Produktion

scanner.next java
Højeste prioritet i Java