Was sind Operatoren?
Was heißt das aber konkret?
Als Operatoren sind z.B. die
in der Mathematik gebräuchlichen Zeichen für die
Grundrechenarten Addition, Subtraktion, Multiplikation und Division
bekannt, die so auch in Programmiersprachen üblich sind. So
liefert das Plus-Zeichen ( +
) z.B. den
Rückgabewert des Additionsergebnisses der beiden beteiligten
Summanden oder das Multiplikationszeichen ( *
) das
Ergebnis der Multiplikation von Multiplikand und Multiplikator.
Operatoren besitzen spezifische Anzahlen an Operanden, auf denen
sie ihre Operationen ausführen. Je nach dem, ob bei der durch
den Operator angestoßenen Operation ein, zwei oder drei
Operanden beteiligt sind, unterscheidet man zwischen unären,
binären und ternären Operatoren.
Bei
einer Addition steht der Operator z.B. zwischen zwei Operanden. Der
Plus-Operator gehört somit zu den binären Operatoren. Das
Minus-Zeichen zur Kennzeichnung des negativen Wertes einer Ziffer
gehört zu den unären Operatoren, weil sein Einfluss sich
nur auf einen Operaden, den gekennzeichneten Wert, bezieht. Im
Gegensatz dazu gehört das Minus als Subtraktions-Operator
jedoch zu den binären Operatoren.
In Java existiert
darüber hinaus ein ternärer Operator zur
Fallunterscheidung, dessen Funktion in einem gesonderten
Artikel behandelt wird.
Innerhalb eines Ausdrucks können mehrere Operatoren vorkommen. Um eine reproduzierbare Auswertung des Ausdrucks zu gewährleisten, muss die Reihenfolge ihrer Anwendung geregelt werden. Dies geschieht durch sog. Bindungs- und Assoziativitätsregeln.
Hierbei beschreiben die Bindungsregeln die Reihenfolge der
Ausführung von Operationen. So muss bei dem o.a.
Additions-Beispiel der Plus-Operator ( +
)
beispielsweise vor der Zuweisung ( =
) ausgeführt
werden, um das Ergebnis der Addition in der Variablen ablegen zu
können. Ein anderes Beispiel hierfür stellt die Regel 'Punkt-
vor Strichrechnung' dar, nach der Multiplikation und Division
vor Addition und Subtraktion auszuführen sind.
Die Assoziativität regelt die Auswertungsreihenfolge von Operatoren mit der gleichen Bindungskraft. Dies kann z.B. bei der Auswertung von zusammengesetzten boolschen Ausdrücken von entscheidender Bedeutung sein. Im Allgemeinen findet in Java die Auswertungsreihenfolge jedoch von links nach rechts statt. Nur wenige Operatoren werden von rechts nach links ausgewertet.
Die folgenden Tabelle1) listet die in Java gebräuchlichen Operatoren in absteigender Reihenfolge ihrer Bindungskraft. Operatoren in einer Gruppe besitzen die gleiche Bindungskraft.
Gruppe | Operator | Funktion |
---|---|---|
postfix | expr++
|
Inkrement mit nachgestellter Auswertung |
expr--
|
Dekrement mit nachgestellter Auswertung | |
unär | ++expr
|
Inkrement mit vorangestellter Auswertung |
--expr
|
Dekrement mit vorangestellter Auswertung | |
+expr
|
positives Vorzeichen ohne dauerhafte Zuweisung | |
-expr
|
negatives Vorzeichen ohne dauerhafte Zuweisung | |
~ |
Einerkomplement | |
! |
Logisches NICHT | |
Punktrechnung | * |
Multiplikation |
/ |
Division | |
% |
Modulo (Rest) | |
Strichrechnung | + |
Addition |
- |
Subtraktion | |
bitshift | << |
Linksschieben |
>> |
Rechtsschieben | |
>>> |
Rechtsschieben mit Nullexpansion | |
relational | < |
kleiner |
> |
größer | |
<= |
kleiner gleich | |
>= |
größer gleich | |
instanceof |
Klassenzugehörigkeit | |
Vergleich | == |
Gleichheit |
!= |
Ungleichheit | |
bitweises UND | & |
|
bitweises exclusive ODER | ^ |
|
bitweises ODER | | |
|
logisches UND | && |
|
logisches ODER | || |
|
ternär | ? : |
bedingte Auswertung |
Zuweisung | = |
Zuweisung |
+= |
Addition und Zuweisung | |
-= |
Subtraktion und Zuweisung | |
*= |
Multiplikation und Zuweisung | |
/= |
Division und Zuweisung | |
%= |
Modulo und Zuweisung | |
&= |
bitweises UND und Zuweisung | |
^= |
bitweises exclusiv ODER und Zuweisung | |
|= |
bitweises ODER und Zuweisung | |
<<= |
Linksschieben und Zuweisung | |
>>= |
Rechtsschieben und Zuweisung | |
>>>= |
Rechtsschieben mit Nullexpansion und Zuweisung |
1) Quelle: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html#nutsandbolts-precedence
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.