Level | Gibt an, welche Operation zuerst ausgeführt wird. Je kleiner die
Zahl, umso stärker bindet der Operator die Operanden.
Bsp.: a = b < 5 * c wird wie folgt geklammert: a = (b < (5 * c)), denn '*' hat Priorität (Level) 3, '<' hat Prio. 6 und zuletzt '=' hat Prio. 14. Bem.: Die Einträge in Level 0 sind eigentlich keine Operatoren, stehen aber da, um die Ausführungsreihenfolge zu verdeutlichen. |
Zeichen | Gibt an, wie der Operator in JAVA geschrieben wird. |
Typen | Erklärt, auf welche Datentypen der Operator wirkt. |
L/R | Gibt bei Operatoren gleicher Stufe die Klammerung (Assoziativität) an.
(L = von links nach rechts, R = von rechts nach links) 1. Beispiel: x * 5 / 17 wird wie (x * 5) / 17 geklammert (L). 2. Beispiel: a[b] = b = 0 wird wie a[b] = (b = 0) geklammert (R). Bem.: Die Klammerung hat nichts mit der Auswertungsreihenfolge zu tun: diese geht immer von links nach rechts! |
Name | Operation in Worten. |
Beispiel | Zeigt ein Codestück zur Veranschaulichung. |
Beschreibung | ist eine Erläuterung zum Operator. |
Zeichen | Typen | L/R | Name | Beispiel | Beschreibung |
Level 0 | |||||
( ) | Ausdruck | L | Klammerung | 4 * (5 + j); | Klammern haben Vorrang vor allen anderen Operatoren. |
(args) | Argumentenliste | L | Methode | println("Hallo"); | Methodenaufruf. |
. | Objekt | L | Dereferenzierung | myObj.toString(); myArr.length; | Auf Attribute und Klassenvariabe und auf Methoden und statische Funktionen wird mit dem Punkt (.) zugegriffen. |
[ ] | Array | L | Indexierung | myArr[i] = 77 | Zugriff auf Komponenten von Arrays (Feldern). |
; | Anweisung | L | Separator | x = 5; y = 7; | Zwei aufeinanderfolgende Anweisungen werden durch den Strichpunkt getrennt. Die Ausführungsreihenfolge ist die Leserichtung. |
, | Deklaration | L | Separator | int i = 5, j = 7; | Zwei aufeinanderfolgende Deklarationen werden (auch in for()-Schleifen) durch Kommata getrennt. Die links stehende Deklaration wird zuerst ausgeführt. |
++ | zahl,char | L | Inkrement | x++ | Führt x = x + 1 aus. Der Wert von x++ ist gleich x vor dem Inkrement (post-Inkrement). |
-- | zahl,char | L | Dekrement | y-- | Führt y = y - 1 aus. Der Wert von y-- ist gleich y vor dem Dekrement (post-Dekrement). |
Level 1 | |||||
++ | zahl,char | R | Inkrement | ++i | Führt i = i + 1 aus. Der Wert von i++ ist gleich i nach dem Inkrement (pre-Increment). |
-- | zahl,char | R | Dekrement | --j | Führt j = j - 1 aus. Der Wert von --j ist gleich j nach dem Dekrement (pre-Dekrement). |
+ | zahl,char | R | Vorzeichen + | z = x * (+5) | Positives Vorzeichen. Meist redundant. |
- | zahl,char | R | Vorzeichen - | m = -5 * z; | Negatives Vorzeichen. |
~ | ganzzahl,char | R | Bit-Komplement | x = ~y; | Umkehrung des (dem Operanden zugehörigen) Bitmusters. ~0x35014541 == 0xCAFEBABE |
! | bool | R | logische Umkehrung | if(!(x == 0)) | Umkehrung des boolschen Wertes. (!true == false) |
Level 2 | |||||
(Typ) | R | Typumwandlung | x = (Fig) vector.elementAt(i); | Umwandlung des Operanden in den neuen Datentyp (casting). Falls es nicht möglich ist, wird eine RuntimeException auftreten. | |
new | Klasse | R | Instanzierung | new HelloWorld(); | Erzeugen eines neuen Objektes. Dieses muss nicht zwingend einer Referenz zugewiesen werden. |
Level 3 | |||||
* | zahl,char | L | Multiplikation | 5 * z | Multiplikation. |
/ | zahl,char | L | Division | 5.0 / Math.PI | Division. |
% | zahl,char | L | Modulo | 111 % 37 | Restbildung. Bsp: a) 5 % 2 == 1, b) 7.6 % 2.9 == 1.8, c) -8 % 3 == -2. Vorgehen: Vergiss alle Vorzeichen - berechne Rest - falls linker Operand negativ war, so auch das Resultat. |
Level 4 | |||||
+ | zahl,char | L | Plus | 7 + k | Addition. |
- | zahl,char | L | Minus | 19 - l | Subtraktion. |
+ | String | L | "concat" | "Hallo" + " Welt" == "Hallo Welt" | Zusammenfügen von Zeichenketten. |
Level 5 | |||||
<< | ganzzahl,char | L | Linksshift | i<<2 | Bitweises Verschieben des linken Operanden um n (hier 2) Bits nach links. Die Zahl wird von rechts mit Nullen aufgefüllt.1 |
>> | ganzzahl,char | L | Rechtsshift | j>>3 | Vorzeichenbehaftetes (signed) bitweises Verschieben des linken Operanden um n (hier 3) Bits nach rechts. Die Zahl wird von links mit dem Vorzeichen (0 = +, 1 = -) aufgefüllt. |
>>> | ganzzahl,char | L | Rechtsshift | k>>>4 | Vorzeichenfreies (unsigned) bitweises Verschieben des linken Operanden um n (hier 4) Bits nach rechts. Die Zahl wird von links mit Nullen aufgefüllt.2 |
Level 6 | |||||
> | zahl,char | L | Vergleich (größer) | if (i > 5) | Liefert genau dann true, wenn der linke Operand größer ist als der rechte. |
>= | zahl,char | L | Vergleich (größer / gleich) | if (j >= 8) | Liefert genau dann true, wenn der linke Operand größer ist als der rechte oder wenn die Operanden gleich sind. |
< | zahl,char | L | Vergleich (kleiner) | if (k < 8) | Liefert genau dann true wenn der linke Operand kleiner ist als der rechte. |
<= | zahl,char | L | Vergleich (kleiner / gleich) | if (m <= 4) | Liefert genau dann true, wenn der linke Operand kleiner ist als der rechte oder wenn beide gleich sind. |
instanceof | Objekt, Typ | L | Typ Vergleich | if (myObj instanceof BankAccount) | Liefert genau dann true, wenn das linke Objekt vom gefragten Typ ist. Aber auch dann, wenn das linke Objekt eine Instanz einer davon abgeleiteten Klasse ist (Polymorphie). |
Level 7 | |||||
== | primitiv | L | gleicher Wert | if (0 == n) | Liefert genau dann true wenn die Werte der primitiven Variablen gleich sind. |
!= | primitiv | L | ungleicher Wert | if (0 != n) | Liefert genau dann true, wenn die Werte der primitiven Variablen nicht gleich sind, oder wenn ein Operand den Wert NaN (not a number) hat. |
== | Objekt | L | selbe Referenz | if (this == otherObj) | Liefert genau dann true, wenn beide Referenzen auf die gleichen Objekte zeigen. Um herauszufinden, ob die Objekte gliechartig sind, verwende die Methode equals(). |
!= | Objekt | L | andere Objekte | if (this != otherObj) | Liefert genau dann true, wenn beide Referenzen auf andere Objekte zeigen. |
Level 8 | |||||
& | ganzzahl, char | L | bitweise UND | 0x00FF0000 & color | Liefert das (mit "und") maskierte Bitmuster (hier: Rotwert). |
& | bool | L | logisches UND | boolC = boolA & boolB; | Liefert genau dann true, wenn beide Operatoren true sind. Handelt es sich bei den Operatoren um Ausdrücke, so werden beide berechnet. |
Level 9 | |||||
^ | ganzzahl, char | L | bitweise XOR | 0x00FF0000 ^ color | Liefert das mit XOR (exklusives oder) veränderte Bitmuster. |
^ | bool | L | logisches XOR | boolC = boolA ^ boolB; | Liefert genau dann true, wenn die Operatoren verschiedene Wahrheitswerte haben. |
Level 10 | |||||
| | ganzzahl, char | L | bitweise ODER | 0x00FF0000 | color | Liefert das (mit "oder") maskierte Bitmuster. |
| | bool | L | logisches ODER | boolC = boolA | boolB; | Liefert genau dann true, wenn einer der Operatoren true ist. Handelt es sich bei den Operatoren um Ausdrücke, so werden beide berechnet. |
Level 11 | |||||
&& | bool | L | UND Bedingung | if(nonZero() && ok()) | Liefert true, wenn beide Operanden den Wert true haben. Falls der linke Operand bereits false ist, so wird der rechte Operand nicht ausgewertet (Kurzschlussauswertung). |
Level 12 | |||||
|| | bool | L | ODER Bedingung | isNum() || isChar() | Liefert true, wenn einer der beiden Operanden den Wert true hat. Falls der linke Operand bereits true ist, so wird der rechte Operand nicht ausgewertet (Kurzschlussauswertung). |
Level 13 | |||||
? : | bool, Anweisung, Anweisung | R | Bedingung | A ? B : C | Falls A wahr ist (true), so wird die Anweisung B ausgewertet, sonst die Anweisung C. |
Level 14 | |||||
= | Var., Wert | R | Zuweisung | x = 17; | Der Ausdruck rechts des Gleichheitszeichens wird berechnet. Dieser berechnete Wert wird der Variable zugewiesen. |
*= /= %= += -= <<= >>= >>>= &= ^= |= | Var., Wert | R | Zuweisung | z *= 3 | v °= A
<==> v = (type_of_v) (v ° (A)) Dabei steht ° für einen beliebigen Operator aus der Liste. v wird beim Benutzen dieser Notation nur einmal ausgewertet. |
1
Die Anzahl Verschiebebits wird noch gekürzt. Genauer "a << b"
wird wie "a << b % 32" berechnet.
2
Achtung: Operanden vom Typ byte, char und
short
werden vor der Berechnung in int umgewandelt.