EMZETT.
Login

Typumwandlung in Java (Code Conversions)

Kurz: Typumwandlung heißt, einen Wert von einem Datentyp in einen anderen zu überführen: zwischen Zahlen (int ↔ double), zwischen Text und Zahl ("42" ↔ 42) und zwischen Objekttypen.

Genauer: Java ist streng typisiert. Manche Umwandlungen macht der Compiler selbst (sicher), andere muss man ausdrücklich verlangen (mit Risiko). Text und Zahlen wandelt man mit Methoden um, nicht mit Casts.

Im Detail

1. Zahlen: implizit (erweitern) und explizit (einengen)

int i = 5;
double d = i;            // automatisch: int → double (kein Verlust)
long l = i;              // automatisch
 
double pi = 3.99;
int k = (int) pi;        // Cast nötig: 3 (Nachkommastellen werden abgeschnitten, nicht gerundet)
int r = (int) Math.round(pi);   // 4 (runden)
byte b = (byte) 200;     // -56 (Überlauf!)

Reihenfolge der Erweiterung: byte → short → int → long → float → double. Rückwärts braucht einen Cast und kann Informationen verlieren.

2. Text ↔ Zahl

int a = Integer.parseInt("42");         // Text → int
double x = Double.parseDouble("3.14");  // Punkt als Dezimaltrenner
String s = String.valueOf(42);          // Zahl → Text
String t = "" + 42;                     // ebenso
// Integer.parseInt("abc") wirft NumberFormatException → abfangen!

3. Objekte: Upcast und Downcast

Tier t = new Hund();          // Upcast: automatisch
Hund h = (Hund) t;            // Downcast: Cast, kann scheitern
if (t instanceof Hund hund) { hund.bellen(); }   // sicher mit Mustervergleich

4. Boxing

Integer boxed = 5;     // int → Integer (automatisch, Autoboxing)
int plain = boxed;     // Unboxing (NullPointerException, wenn boxed null ist)
  • Rundungsfalle: (int) 2.9999999 ist 2. int / int ergibt eine ganze Zahl: 5 / 2 == 2. Eine Seite als double angeben: 5 / 2.0 == 2.5.
  • Ganzzahl-Überlauf: int umfasst ±2,1 Mrd. Größere Werte long nutzen. Math.addExact wirft bei Überlauf eine Ausnahme.
  • Zeichen: (int) 'A' ist 65, (char) 66 ist 'B'.
  • Datum und Zeit: LocalDate.parse("2026-10-13"), DateTimeFormatter für eigene Formate.
  • Datenformat: JSON ↔ Objekt (Jackson, Gson) und Text ↔ Bytes (getBytes(StandardCharsets.UTF_8)) sind ebenfalls Umwandlungen.
  • Genauigkeit: Für Geld kein double, sondern BigDecimal.

Siehe auch: Type Casting, Wrapper-Klassen, Numbers and Strings