In Java werden Variablen mittels Zuweisungsoperatoren Werte zugewiesen. Der wichtigste Zuweisungsoperator ist die „Einfache Wertzuweisung“, bspw. a = b
.
Es sind neben dem obengenannten Operator noch 11 weitere Zuweisungsoperatoren in Java implementiert. Durch Zuweisungsoperatoren wird jeweils ein Ausdruck ausgewertet und das Ergebnis als Rückgabewert der linksstehenden Variable zugewiesen.
Folgende Operatoren können mit der Zuweisung in Java kombiniert werden:
Die folgende Tabelle stellt die Zuweisungsoperatoren von Java einzeln vor:
Operator | Bezeichnung | Beispiel | Beschreibung |
---|---|---|---|
= | Einfache Zuweisung | a = b | Es wird a der Wert von b zugewiesen und b als Rückgabewert geliefert. |
+= | Additionszuweisung | a += b | Es wird a das Ergebnis aus a + b zugewiesen und a + b als Rückgabewert geliefert. |
-= | Subtraktionszuweisung | a -= b | Es wird a das Ergebnis aus a – b zugewiesen und a – b als Rückgabewert geliefert. |
*= | Multiplikationszuweisung | a *= b | Es wird a das Ergebnis aus a * b zugewiesen und a * b als Rückgabewert geliefert. |
/= | Divisionszuweisung | a /= b | Es wird a das Ergebnis aus a / b zugewiesen und a / b als Rückgabewert geliefert. |
%= | Modulozuweisung | a %= b | Es wird a das Ergebnis aus a % b zugewiesen und a % b als Rückgabewert geliefert. |
&= | Und-Zuweisung | a &= b | Es wird a das Ergebnis aus a & b zugewiesen und a & b als Rückgabewert geliefert. |
|= | Oder-Zuweisung | a |= b | Es wird a das Ergebnis aus a | b zugewiesen und a | b als Rückgabewert geliefert. |
^= | Exklusiv-Oder-Zuweisung | a ^= b | Es wird a das Ergebnis aus a ^ b zugewiesen und a ^ b als Rückgabewert geliefert. |
<<= | Linksschiebe-Zuweisung | a <<= b | Es wird a das Ergebnis aus a << b zugewiesen und a << b als Rückgabewert geliefert. |
>>= | Rechtsschiebe-Zuweisung | a >>= b | Es wird a das Ergebnis aus a >> b zugewiesen und a >> b als Rückgabewert geliefert. |
>>>= | Rechtsschiebe-Zuweisung ohne Vorzeichen |
a >>>= b | Es wird a das Ergebnis aus a >>> b zugewiesen und a >>> b als Rückgabewert geliefert. |
Die Zuweisungsoperatoren dürfen nicht mit den relationalen Operatoren verwechselt werden. So ist bspw. a = b
nicht das Gleiche wie a == b
.
Glücklicherweise kann eine Verwechslung dieser beiden Operatoren nicht mehr so leicht erfolgen, da als Kontrollausdruck in Schleifen oder Verzweigungen nur Operanden vom boolean-Datentyp verwendet werden dürfen.
Somit ist if(zahl1 = zahl2)
nicht erlaubt, der Java-Compiler erwartet hier stattdessen if(zahl1 == zahl2)
.
In dem folgenden Beispielprogramm werden die Zuweisungsoperatoren verwendet.
Beispiel Zuweisungsoperatoren in Java.
/* * Beispielanwendung ZuweisungsOperatoren in Java. */ public class ZuweisungsOperatoren{ public static void main(String[] args) { int a = 260, b = 4, c = -260; System.out.println("\na = " + a); System.out.println("b = " + b); System.out.println("c = " + c); a = b; System.out.println("\nEinfache Zuweisung: a = b ergibt " + a); a = 260; a += b; System.out.println("\nAdditionszuweisung: a += b ergibt " + a); a = 260; a -= b; System.out.println("\nSubtraktionszuweisung: a -= b ergibt " + a); a = 260; a *= b; System.out.println("\nMultiplikationszuweisung: a *= b ergibt " + a); a = 260; a /= b; System.out.println("\nDivisionszuweisung: a /= b ergibt " + a); a = 260; a %= b; System.out.println("\nModulozuweisung: a %= b ergibt " + a); a = 260; binaerDarstellenVonInt("\n\na binaer = ", a); binaerDarstellenVonInt("b binaer = ", b); a &= b; binaerDarstellenVonInt("a &= b = ", a); System.out.println("\nUnd-Zuweisung: a &= b ergibt " + a); a = 260; binaerDarstellenVonInt("\n\na binaer = ", a); binaerDarstellenVonInt("b binaer = ", b); a |= b; binaerDarstellenVonInt("a |= b = ", a); System.out.println("\nOder-Zuweisung: a |= b ergibt " + a); a = 260; binaerDarstellenVonInt("\n\na binaer = ", a); binaerDarstellenVonInt("b binaer = ", b); a ^= b; binaerDarstellenVonInt("a ^= b = ", a); System.out.println("\nExklusiv-Oder-Zuweisung: a ^= b ergibt " + a); a = 260; binaerDarstellenVonInt("\n\na binaer = ", a); a <<= b; binaerDarstellenVonInt("a <<= b = ", a); System.out.println("\nLinksschiebe-Zuweisung: a <<= b ergibt " + a); binaerDarstellenVonInt("\n\nc binaer = ", c); c <<= b; binaerDarstellenVonInt("c <<= b = ", c); System.out.println("\nLinksschiebe-Zuweisung: c <<= b ergibt " + c); a = 260; binaerDarstellenVonInt("\n\na binaer = ", a); a >>= b; binaerDarstellenVonInt("a >>= b = ", a); System.out.println("\nRechtsschiebe-Zuweisung: a >>= b ergibt " + a); a = 260; binaerDarstellenVonInt("\n\na binaer = ", a); a >>>= b; binaerDarstellenVonInt("a >>>= b = ", a); System.out.println("\nRechtsschiebe-Zuweisung: a >>>= b ergibt " + a); System.out.println("ohne Vorzeichen (Nullexpansion)"); c = -260; binaerDarstellenVonInt("\n\nc binaer = ", c); c >>= b; binaerDarstellenVonInt("c >>= b = ", c); System.out.println("\nRechtsschiebe-Zuweisung: c >>= b ergibt " + c); c = -260; binaerDarstellenVonInt("\n\nc binaer = ", c); c >>>= b; binaerDarstellenVonInt("c >>>= b = ", c); System.out.println("\nRechtsschiebe-Zuweisung: c >>>= b ergibt " + c); System.out.println("ohne Vorzeichen (Nullexpansion)"); } public static void binaerDarstellenVonInt (String text, int zahl) { int maske = 0b00000000000000000000000000000001; char[] bitfolge = new char[32]; for (int i = 0; i < 32; i++) { bitfolge[31 - i] = (zahl & maske) == 0 ? '0' : '1'; maske = maske << 1; } System.out.print(text); System.out.println(bitfolge); } }
Die zugehörige Textausgabe ist in der unten abgebildeten Kommandozeilenausgabe dargestellt.
Besondere Beachtung sollte man auf die Rechtsschiebe-Zuweisungen mit und ohne Vorzeichen legen. Durch die Rechtsschiebe-Zuweisung ohne Vorzeichen (Nullexpansion) wird aus einer negativen Zahl eine positive Zahl.
Dies könnte zu einem schwerwiegenden Anwendungsfehler führen, wenn der Programmierer dies nicht berücksichtigt bzw. beabsichtigt hat.
Comments 3
Pingback: Operatoren, Ausdrücke und Anweisungen in Java -
Pingback: Java-Grundlagen: Besondere Operatoren in Java
Pingback: Java-Grundlagen: Ausdrücke, die kleinsten ausführbaren Einheiten in Java