Um mit den Werten (Operanden) in Java zu rechnen, können verschiedene Operatoren verwendet werden.
Arithmetische Operatoren
Arithmetische Operatoren können mit Zahlen als Werte verwendet werden.
Einstellige Operatoren (monadisch)
werden als Präfix notiert. Also vor dem Wert / Der Variable.
Operator | Beispiel | Funktion |
+ | + a | Identität (Liefert den gleichen Wert wie a) |
– | – a | Negation (Liefert den negativen Wert von a) |
Zweistellige Operatoren (dyadisch)
werden als Infix notiert. Also zwischen zwei Werten / Variablen.
Operator | Bezeichnung | Beispiel | Wirkung |
+ | Addition | a + b | Addiert a und b |
– | Subtraktion | a – b | subtrahiert a von b |
* | Multiplikation | a * b | multipliziert a mit b |
/ | Division | a / b | dividiert a durch b |
% | Modulo | a % b | Ermittelt den Rest von a / b |
Zuweisungsoperator
Der Zuweisungsoperator dient dazu einer Variable einen Wert zuzuweisen. Dieser wird in Java durch das Gleich-Zeichen dargestellt.
1 |
a = 5; |
Die variable „a“ enthält nun den Wert 5 des Datentyps int (Standard Datentyp für Ganzzahlen ohne explizite Angabe).
1 |
a = b = c = d = 5; |
Auch dies ist denkbar. Hier wird mehreren Variablen der Wert 5 gleichzeitig zugeweisen, da d der Wert 5 zugeweisen wird. c wird der Wert d zugeweisen, der zu diesem Zeitpunkt bereits 5 ist usw.
Vergleichsoperator
Vergleichsoperatoren dienen dazu, die Werte miteinander zu vergleichen. Das Ergebnis von Vergleichsoperatoren ist stets true (wahr) oder false (falsch). Dabei handelt es sich um den Typ boolean (Wahrheitswert).
Operator | Beispiel | ist wahr, wenn |
> | a > b | a größer ist als b |
>= | a >= b | a größer gleich b ist |
< | a < b | a kleiner ist als b |
<= | a <= b | a kleiner gleich b ist |
== | a == b | a gleich b ist |
!= | a != b | a ungleich b ist |
Logische Operatoren
Operator | Besipiel | Wirkung |
&& | a && b | prüft b nur wenn a true ist |
|| | a|| b | prüft b nur wenn a false ist |
! | ! a | Negiert a |
Beispiele:
1 2 3 |
a = 10; b = 15; (a > 15) && (b < 10); |
In diesem Fall wird gar nicht erst geprüft, ob b < 10 ist, da a nicht größer als 15 ist, können gar nicht beide Werte true ausgeben.
1 2 3 |
a = 10; b = 15; (a > 15) || (b < 10); |
Hier würde b überprüft werden, da a false ist. Da abgefragt wird ob a ODER b true sind.
Dreistelliger Bedingungsoperator
Dieser ?: Operator wird gesplittet benutzt. Im Prinzip ist er eine Kurzschreibweise für eine if-Abfrage. Beispiel:
1 2 |
a = 5; (a == 5) ? "a ist 5" : "a ist nicht 5"; |
In diesem Fall wird a ist 5 ausgegeben. Wäre der Wert ein anderer, wäre die Ausgabe a ist nicht 5.
Inkrement, und Dekrementoperatoren
Der Inkrementoperator erhöht den Wert um 1 und der Dekrementoperator verringert den Wert um 1.
Operator | Beispiel | Wirkung |
++ | a++; | Erhöht den Wert von a um 1 |
— | a–; | Verringert den Wert von a um 1 |
Im Prinzip können diese Operatoren, sowohl als Präfix als auch als Suffix verwendet werden. Entscheidend ist dabei der Zeitpunkt zu dem der Operator ausgeführt wird.
Bei der Präfix Notation wird erst der Wert erhöht/verringert und dann der Rest des Ausdrucks ausgewertet.
Bei der Suffix Notation wird erst der Ausdruck ausgewertet und anschließend der Wert erhöht/verringert.
1 2 3 4 |
a = 5; b = a++; c = 5; d = --c; |
Nach der Auswertung des Programmes wären die Werte wie folgt:
a = 6 da nach der kompletten Abarbeitung des Programmes die Inkrementierung durchgeführt wird.
b = 5 da wie oben erwähnt erst nach der kompletten Abarbeitung der Wert a erhöht wird, wird zum Zeitpunkt der Ausführung dem Wert b noch der Wert a mit 5 zugewiesen.
c = 4 c ist zunächst 5, da es aber dekrementiert der Variable d zugewiesen wird, ist der Wert nach Ablauf 4
d = 4 da der Wert als Präfix notiert ist wird die dekrementierung vorgenommen bevor der Ausdruck ausgewertet wird, also wird d schon der dekrementierte Wert von c also 4 zugeweisen.
Kurzschreibweisen
Da es bei längeren Variablennamen sehr mühsam wird, den Variablennamen doppelt zu schreiben, möchte man mit diesem rechnen, gibt es in Java Kurzschreibweisen.
1 |
ichBinEineVariable = ichBinEineVariable + 5; |
Einfach wird es so:
1 |
ichBinEineVariable += 5; |
Hier wird der arithmetische Operator dem Zuweisungsoperator voran gestellt. Der Variablenname muss nicht noch einmal geschrieben werden.
Abkürzung | „Normale“ Schreibweise | Beispiel Abkürzung |
+= | a = a + b | a += b |
-= | a = a – b | a -= b |
*= | a = a * b | a *= b |
/= | a = a / b | a /= b |
%= | a = a % b | a %= b |
&= | a = a & b | a &= b |
|= | a = a | b | a |= b |
^= | a = a ^ b | a ^= b |
<<= | a = a << b | a <<= b |
>>= | a = a >> b | a >>= b |
>>>= | a = a >>> b | a >>>= b |
Prioritäten
Ähnlich wie in der Mathematik haben auch Operatoren in Java eine gewisse Prioritätenreihenfolge. Bei gleicher Priorität mehrerer Operationen in einem Ausdruck wird von links nach rechts ausgewertet. Zuweisungsoperatoren, sowie alle verkürzten Zuweisungsoperatoren hingegen von rechts nach links.
Ebenfalls analog zur Mathematik, kann mit der richtigen Klammernsetzung die Reihenfolge der Operationen modifiziert werden.
Bezeichnung | Operator | Priorität |
Komponentenzugriff bei Klassen Komponentenzugriff bei Feldern Methodenaufruf |
. [ ] ( ) |
15 15 15 |
Unäre Operatoren | ++, –, +, -, ~, ! | 14 |
Explizite Typumwandlung | ( ) | 13 |
Multiplikative Operatoren (Multiplikation, Division) |
*, /, % | 12 |
Additive Operatoren (Addition, Subtraktion) |
+, – | 11 |
Schiebeoperatoren | <<, >>, >>> | 10 |
Vergleichsoperatoren (Gleichheit, Ungleichheit) |
==, != | 8 |
Und (bitweise / logisch) |
& | 7 |
Oder (bitweise exklusiv) |
^ | 6 |
Oder (bitweise / logisch) |
| | 5 |
Und (logisch) |
&& | 4 |
Oder (logisch) |
|| | 3 |
Bedingungsoperator (verkürzte if Abfrage) |
? : | 2 |
Zuweisungsoperatoren | =, +=, -=, *=, /= usw. | 1 |
Die Prioritäten höherer Stufen werden vor denen niedrigerer Stufen ausgewertet.
0 Kommentare