Wrapper-Klassen
- Primitive Typen funktionieren mit Call-By-Value
- Wrapper-Klassen können verwendet werden, wenn Call-By-Reference benötigt wird
Integer iWrap = Integer.valueOf(4711);
Double dWrap = Double .valueOf(3.14);
int i = iWrap.intValue ();
double d = dWrap.doubleValue();Autoboxing und Unboxing
// Autoboxing
Integer iWrap = 4711; // int -> Integer
Double dWrap = 3.14; // double -> Double
// Unboxing
int i = iWrap; // Integer -> int
double d = dWrap; // Double -> doubleUmwandlung von Strings
In Wrapper-Klassen:
Integer iWrap = Integer.valueOf("4711");
Double dWrap = Double .valueOf("3.14");In Primitive Typen:
int i = Integer.parseInt ("4711");
double d = Double .parseDouble("3.14");In Strings:
String i2 = Integer.toString(-1234); // int -> String
String d2 = Double .toString(2.718); // double -> String
String i3 = "" + (-1234); // int -> String
String d3 = "" + 2.718;Enumerations
enum Jahreszeit {Frühling, Sommer, Herbst, Winter}
Jahreszeit zeit = Jahreszeit.Sommer;Enum-Methoden
values()liefert ein Array aller Werte des Enumsordinal()liefert die Ordinalzahl eines Enum-Wertes
for(Jahreszeit zeit : Jahreszeit.values()) {
System.out.println(zeit.ordinal() + ": " + zeit);
}Ausgabe:
0: Frühling
1: Sommer
2: Herbst
3: Winter
Enums und Switch
for (var zeit : Jahreszeit.values())
System.out.print(switch (zeit) {
case Frühling -> "spring ";
case Sommer -> "summer ";
case Herbst -> "autumn ";
case Winter -> "winter ";
});Die Cases müssen ohne Klassennamen qualifiziert werden!
Records
Für Datenklassen (Klassen ohne Verhaltensweise, nur Behälter von Daten) bietet Java eine Kurzform der Klassendefinition:
record Punkt(int x, int y) {}Dies ist äquivalent zu folgender Klasse:
final class Punkt {
private final int x, y;
public Punkt(int x, int y) { this.x = x; this.y = y; }
public int x() { return x; }
public int y() { return y; }
@Override public String toString() {
return "Punkt[x=" + x + ", y=" + y + "]";
}
}