Was sind Operatoren?

Operatoren sind Funktions-ähnliche Handlungs-Vorschriften, die auf Operanden angewendet werden und mit diesen zusammen Ausdrücke bilden. Sie besitzen Rückgabewerte, die den Ergebnissen der auf die Operanden angewendeten Operationen entsprechen.

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: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html#nutsandbolts-precedence