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 -> double

Umwandlung 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 Enums
  • ordinal() 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 + "]";
    }
}