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 Mustervergleich4. Boxing
Integer boxed = 5; // int → Integer (automatisch, Autoboxing)
int plain = boxed; // Unboxing (NullPointerException, wenn boxed null ist)- Rundungsfalle:
(int) 2.9999999ist 2.int / intergibt eine ganze Zahl:5 / 2 == 2. Eine Seite alsdoubleangeben:5 / 2.0 == 2.5. - Ganzzahl-Überlauf:
intumfasst ±2,1 Mrd. Größere Wertelongnutzen.Math.addExactwirft bei Überlauf eine Ausnahme. - Zeichen:
(int) 'A'ist 65,(char) 66ist'B'. - Datum und Zeit:
LocalDate.parse("2026-10-13"),DateTimeFormatterfür eigene Formate. - Datenformat: JSON ↔ Objekt (Jackson, Gson) und Text ↔ Bytes (
getBytes(StandardCharsets.UTF_8)) sind ebenfalls Umwandlungen. - Genauigkeit: Für Geld kein
double, sondernBigDecimal.
Siehe auch: Type Casting, Wrapper-Klassen, Numbers and Strings