Java-operatørpræference

Operatørens forrang bestemmer rækkefølgen, i hvilken operatørerne i et udtryk vurderes.

Før du begynder at læse denne artikel, skal du have en grundlæggende viden om Java-operatører.

Se nu på udsagnet nedenfor:

 int myInt = 12 - 4 * 2;

Hvad vil værdien af ​​myInt være? Vil det være (12 - 4)*2, altså 16? Eller det vil være 12 - (4 * 2), det vil sige 4?

Når to operatører deler en fælles operand, 4i dette tilfælde betjenes operatøren med den højeste prioritet først.

I Java er forrang for *højere end for -. Derfor udføres multiplikationen før subtraktion, og værdien af ​​myInt vil være 4.

Operatørens prioritetstabel

Tabellen nedenfor viser forrang for operatører i Java; jo højere den vises i tabellen, jo højere er dens forrang.

Java-operatørpræference
Operatører Forrang
stigning og reduktion af postfix ++ --
præfiks stigning og nedgang, og unary ++ -- + - ~ !
multiplikativ * / %
tilsætningsstof + -
flytte << >> >>>
relationel < > <= >= instanceof
lighed == !=
bitvis OG &
bitvis eksklusiv ELLER ^
bitvis inklusive ELLER |
logisk OG &&
logisk ELLER ||
ternær ? :
opgave = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Eksempel: Operatørpræference

 class Precedence ( public static void main(String() args) ( int a = 10, b = 5, c = 1, result; result = a-++c-++b; System.out.println(result); ) )

Output :

 2

Operatorens forrang for præfikset ++er højere end for -subtraktionsoperatøren. Derfor

 resultat = a - ++ c - ++ b;

svarer til

 resultat = a - (++ c) - (++ b);

Når du beskæftiger dig med flere operatorer og operander i et enkelt udtryk, kan du bruge parenteser som i ovenstående eksempel for at få klarhed. Udtrykket inden for parenteserne evalueres først.

Associativitet af operatører i Java

Hvis et udtryk har to operatorer med samme forrang, evalueres udtrykket i henhold til dets associativitet (enten fra venstre mod højre eller fra højre mod venstre). Lad os tage et eksempel.

 a = b = c;

Her tildeles værdien af ​​c variabel b. Derefter tildeles værdien af ​​b til variabel a. Hvorfor? Det er fordi associativiteten af ​​= operator er fra højre mod venstre.

Nedenstående tabel viser Java-operatørernes associativitet sammen med deres associativitet.

Java Operator Precedence and Associativity
Operatører Forrang Associativitet
stigning og reduktion af postfix ++ -- venstre til højre
præfiks stigning og nedgang, og unary ++ -- + - ~ ! højre mod venstre
multiplikativ * / % venstre til højre
tilsætningsstof + - venstre til højre
flytte << >> >>> venstre til højre
relationel < > <= >= instanceof venstre til højre
lighed == != venstre til højre
bitvis OG & venstre til højre
bitvis eksklusiv ELLER ^ venstre til højre
bitvis inklusive ELLER | venstre til højre
logisk OG && venstre til højre
logisk ELLER || venstre til højre
ternær ? : højre mod venstre
opgave = += -= *= /= %=
&= ^= |= <<= >>= >>>=
højre mod venstre

Du behøver ikke at huske alt her. For det meste giver operatørernes forrang og associativitet mening i sig selv. Du kan altid vende tilbage til denne artikel til reference, når du er i tvivl. Du kan også bruge parentes, hvis du synes, det gør din kode lettere at forstå.

Interessante artikler...