swirl logo

About     Archive     Feed     Impressum

Java: Die Java-Operatoren im Detail (Operator-Precedence, Arten, ...)

Hintergrund

Grundsätzlich kommen Operatoren ins Spiel, wenn eine Wirkung (z.B. Addition) auf ein oder mehrere Operanden angewendet werden sollen. Ein Operand repräsentiert dabei einen Wert auf den der Effekt des Operators angewendet wird und kann beispielsweise eine Variable darstellen. Zur Realisierung einer solchen Wirkung gibt es nicht nur einen „richtigen“ Operator. Vielmehr lässt sich ein gewünschter Effekt fast immer über unterschiedliche Operatoren realisieren. Beispielsweise eine Addition um 1:

int a = 1;
a++; // Inkrementierung um 1
a = a + 1; // Addition um 1

Treffen in einem Ausdruck (Expression) mehrere Operatoren aufeinander, so muss die Reihenfolge der Abarbeitung (Evaluierung) geregelt werden. Aus diesem Grund sind alle Operatoren in einer mehrstufigen Prioritätsreihenfolge (operator precedence) eingeordnet. Dabei gilt:

Ähnlich wie in der Mathematik, besteht die Möglichkeit zur Einflussnahme der Abarbeitungsreihenfolge durch entsprechende Klammersetzung:

int a = 2 * 2 + 1;   // 5
int b = 2 * (2 + 1); // 6 

Wie sich dem Beispiel entnehmen lässt, gilt auch in Java die aus der Mathematik bekannte Vorrangsregel „Punkt vor Strich“. Da es im Gegensatz zur Mathematik nicht nur arithmetische Operatoren in Java gibt, besteht zusätzlicher Regelungsbedarf.

Operator Precedence (Bearbeitungsreihenfolge)

Hierbei gilt:

Zur Erleichterung finden Sie folgend eine Aufstellung der Operatoren mit deren zugehörigen Priorität:

Priorität 1:
++, --, + (Vorzeichen), - (Vorzeichen), ~ (bitweise Nicht), ! (logisches Nicht), () Type-Cast, new (Keyword)

Priorität 2:
*, /, %

Priorität 3:
+ (Addition), - (Subtraktion), + (String-Verkettung)

Priorität 4:
<<, >>, >>>

Priorität 5:
<, <=, >, >=, instanceof

Priorität 6:
==, !=

Priorität 7 bis 11:
&, ^, |, &&, ||

Priorität 12:
? : (Conditional-Operator)

Priorität 13 (Zuweisungen):
=, *=, /=, +=, -=, %=, <<=, >>=, >>>=, &=, ^=, |=

Operator-Arten

Grundsätzlich können die aufgeführten Operatoren anhand unterschiedlicher Merkmale kategorisiert werden. Die einfachste Unterscheidung ist die Zuordnung nach der Anzahl der beteiligten Operanden. Bei Java gibt es hierbei drei zu unterscheidende Typen:

1. unäre Operatoren:

Unäre Operatoren beziehen sich auf nur einen Operanden. In Java fallen darunter 8 Operatoren: ++, –,+,-,~,!,(),?

2. binäre Operatoren:

Binären Operatoren beziehen sich dagegen auf zwei beteiligte Operanden. z. B. +, -, /, *

3. ternäre Operatoren:

Der Bedingungsoperator ist in Java der einzige Operator, welches sich dabei auf drei Operanden bezieht.

Hire me!