Wenn wir in Java über Vorrang sprechen, denkt man zuerst an den Operator. In Java sind bestimmte Regeln definiert, um die Reihenfolge anzugeben, in der die Operatoren in einem Ausdruck ausgewertet werden. Vorrang des Operators ist ein Konzept zur Bestimmung der Gruppe von Begriffen in einem Ausdruck. Die Operatorpriorität ist für die Auswertung der Ausdrücke verantwortlich. In Java , Klammern() Und Array-Index[] haben in Java die höchste Priorität. Addition und Subtraktion haben beispielsweise eine höhere Priorität als die Linksverschiebungs- und Rechtsverschiebungsoperatoren.
Unten ist eine Tabelle definiert, in der der Operator mit der niedrigsten Priorität oben angezeigt wird.
Vorrang | Operator | Typ | Assoziativität |
---|---|---|---|
1) | = += -= *= /= %= | Abtretung Zusatzaufgabe Subtraktionsaufgabe Multiplikationsaufgabe Abteilungszuordnung Modulzuordnung | Rechts nach links |
2) | ? : | Ternäre Bedingung | Rechts nach links |
3) | || | Logisches ODER | Links nach rechts |
4) | && | Logisches UND | Links nach rechts |
5) | | | Bitweises inklusives ODER | Links nach rechts |
6) | ^ | Bitweises Exklusiv-ODER | Links nach rechts |
7) | & | Bitweises UND | Links nach rechts |
8) | != == | Relational ist nicht gleich Relational ist gleich | Links nach rechts |
9) | < <= > >= Instanz von=> | Relational weniger als Relational kleiner oder gleich Relational größer als Relational größer oder gleich Typvergleich (nur Objekte) | Links nach rechts |
10) | >> << >>> | Bitweise Rechtsverschiebung mit Vorzeichenerweiterung Bitweise Linksverschiebung Bitweise Rechtsverschiebung ohne Erweiterung | Links nach rechts |
elf) | - + | Subtraktion Zusatz | Links nach rechts |
12) | * / % | Multiplikation Aufteilung Modul | Links nach rechts |
13) | - + ~ ! ( Typ) | Unäres Minus Unäres Plus Unäres bitweises Komplement Unäre logische Negation Unäre Typisierung | Rechts nach links |
14) | ++ -- | Unäres Post-Inkrement Unäres Postdekrement | Rechts nach links |
fünfzehn) | · () [] | Punktoperator Klammern Array-Index | Links nach rechts |
Rangfolge
Wenn zwei Operatoren einen einzigen Operanden teilen, hat der Operator mit der höchsten Priorität den Vorrang. Beispielsweise wird x + y * z als x + (y * z) behandelt, wohingegen x * y + z als (x * y) + z behandelt wird, da der *-Operator im Vergleich zum +-Operator die höchste Priorität hat.
Netzwerkschicht in Computernetzwerken
Assoziativität
Assoziativ ist ein Konzept, das sich auf die Operatoren bezieht, die angewendet werden, wenn zwei Operatoren mit derselben Priorität in einem Ausdruck vorkommen. Das Assoziativitätskonzept ist sehr hilfreich, um aus dieser Situation herauszukommen. Angenommen, wir haben einen Ausdruck a + b – c (+ und – Operatoren haben die gleiche Priorität) , und dieser Ausdruck wird behandelt als (a + (b - c)) weil diese Operatoren von rechts nach links assoziativ sind. Andererseits wird a+++--b+c++ behandelt als ((a++)+((--b)+(c++))) weil die unären Post-Inkrement- und Dekrement-Operatoren von rechts nach links assoziativ sind.
Im Folgenden wird ein Beispiel definiert, um zu verstehen, wie ein Ausdruck anhand der Rangfolge und der Assoziativität ausgewertet wird.
Ausdruck: x = 4 / 2 + 8 * 4 - ( 5+ 2 ) % 3
Lösung:
1) Im obigen Ausdruck ist der Operator mit der höchsten Priorität () . Die Klammer steht also an erster Stelle und wird zuerst berechnet.
mylivecricket in
x = 4 / 2 + 8 * 4 - 7 % 3
2) Nun, /, * Und % Operatoren haben die gleiche und höchste Priorität + Und - Hier verwenden wir das Assoziativitätskonzept, um sie zu lösen. Der Assoziativ dieser Operatoren verläuft von links nach rechts. Also, / Der Bediener geht zuerst und dann * Und % gleichzeitig.
x = 2 + 8 * 4 - 7 % 3
x = 2 + 32 - 7 % 3
x = 2 + 32 - 1
3) Nun, + Und - Beide Operatoren haben ebenfalls den gleichen Vorrang, und die Assoziativität dieser Operatoren ändert sich nicht nach rechts. Also, + Der Operator geht zuerst und dann - werde gehen.
Java-Nummer zum String
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); } }
Ausgabe