Java Operator Vorrang

Die Operatorrangfolge bestimmt die Reihenfolge, in der die Operatoren in einem Ausdruck ausgewertet werden.

Bevor Sie mit dem Lesen dieses Artikels beginnen, sollten Sie über Grundkenntnisse in Java-Operatoren verfügen.

Schauen Sie sich nun die folgende Aussage an:

 int myInt = 12 - 4 * 2;

Was wird der Wert von myInt sein? Wird es sein (12 - 4)*2, das heißt 16? Oder wird es sein 12 - (4 * 2), das heißt 4?

Wenn zwei Operatoren einen gemeinsamen Operanden haben, wird 4in diesem Fall der Operator mit der höchsten Priorität zuerst operiert.

In Java ist die Priorität von *höher als die von -. Daher wird die Multiplikation vor der Subtraktion durchgeführt, und der Wert von myInt ist 4.

Operator-Rangfolge-Tabelle

In der folgenden Tabelle ist die Priorität von Operatoren in Java aufgeführt. Je höher es in der Tabelle erscheint, desto höher ist seine Priorität.

Java Operator Vorrang
Betreiber Vorrang
Postfix-Inkrement und Dekrement ++ --
Präfix inkrementieren und dekrementieren und unär ++ -- + - ~ !
multiplikativ * / %
Zusatzstoff + -
Verschiebung << >> >>>
relational < > <= >= instanceof
Gleichberechtigung == !=
bitweise UND &
bitweises exklusives ODER ^
bitweise inklusive ODER |
logisches UND &&
logisches ODER ||
ternär ? :
Zuordnung = += -= *= /= %=
&= ^= |= <<= >>= >>>=

Beispiel: Operatorrang

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

Ausgabe :

 2

Die Operatorrangfolge des Präfixes ++ist höher als die des -Subtraktionsoperators. Daher,

 Ergebnis = a - ++ c - ++ b;

ist äquivalent zu

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

Wenn Sie mit mehreren Operatoren und Operanden in einem einzigen Ausdruck arbeiten, können Sie der Übersichtlichkeit halber Klammern wie im obigen Beispiel verwenden. Der Ausdruck in den Klammern wird zuerst ausgewertet.

Assoziativität von Operatoren in Java

Wenn ein Ausdruck zwei Operatoren mit ähnlicher Priorität hat, wird der Ausdruck gemäß seiner Assoziativität bewertet (entweder von links nach rechts oder von rechts nach links). Nehmen wir ein Beispiel.

 a = b = c;

Hier wird der Wert von c der Variablen b zugewiesen. Dann wird der Wert von b der Variablen a zugewiesen. Warum? Dies liegt daran, dass die Assoziativität des Operators = von rechts nach links ist.

Die folgende Tabelle zeigt die Assoziativität von Java-Operatoren zusammen mit ihrer Assoziativität.

Vorrang und Assoziativität von Java-Operatoren
Betreiber Vorrang Assoziativität
Postfix-Inkrement und Dekrement ++ -- links nach rechts
Präfix inkrementieren und dekrementieren und unär ++ -- + - ~ ! rechts nach links
multiplikativ * / % links nach rechts
Zusatzstoff + - links nach rechts
Verschiebung << >> >>> links nach rechts
relational < > <= >= instanceof links nach rechts
Gleichberechtigung == != links nach rechts
bitweise UND & links nach rechts
bitweises exklusives ODER ^ links nach rechts
bitweise inklusive ODER | links nach rechts
logisches UND && links nach rechts
logisches ODER || links nach rechts
ternär ? : rechts nach links
Zuordnung = += -= *= /= %=
&= ^= |= <<= >>= >>>=
rechts nach links

Sie müssen sich hier nicht alles merken. In den meisten Fällen ist die Priorität und Assoziativität von Operatoren an sich sinnvoll. Im Zweifelsfall können Sie jederzeit auf diesen Artikel zurückgreifen. Sie können auch Klammern verwenden, wenn Sie der Meinung sind, dass Ihr Code dadurch leichter zu verstehen ist.

Interessante Beiträge...