1. Warum braucht man Typkonvertierung?
Java ist eine streng typisierte Sprache. Wenn der Computer eine „Schachtel“ für eine Zahl hat, ist der Versuch, dort Text hineinzustecken, in etwa so, als würde man versuchen, eine Gabel in einen USB-Anschluss zu stecken. Der Compiler verzeiht Ihnen das nicht! 😡
Im Alltag arbeiten wir jedoch oft gleichzeitig mit unterschiedlichen Datentypen. Zum Beispiel liegt Ihnen ein String vor, der eine Zahl enthält. Genau hier brauchen wir die Konvertierung (bzw. Umwandlung) von Typen.
Betrachten wir ein Beispiel. Angenommen, Sie möchten die Anzahl der Benutzer speichern:
int a = 1;
int b = "2";
int c = "drei";
Der Compiler sagt hier sofort: „Für wen hältst du mich? Ich kann einen String nicht automatisch in eine Zahl umwandeln – ohne dich geht es nicht. Du musst den String explizit in eine Zahl konvertieren.“
In Java gibt es mehrere Wege der Konvertierung, und jeder hat seine Vor- und Nachteile sowie typische Stolperfallen.
2. int in String umwandeln
In der Praxis benötigt man häufig die String-Darstellung einer Zahl: etwa um sie auf dem Bildschirm auszugeben, in einer Datei zu speichern, über das Netzwerk zu übertragen oder mit Text zu verketten usw. In Java gibt es dafür mehrere Möglichkeiten, die je nach Situation praktisch sind.
Funktion String.valueOf()
Das ist die grundlegende und am weitesten verbreitete Methode:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() wandelt eine Zahl in einen String um, der der Darstellung des übergebenen Objekts entspricht.
Verkettung mit einem leeren String
Alt, aber bewährt:
int number = 42;
String str = "" + number;
Dieser Ansatz funktioniert für einfache Fälle schnell, ist aber für Leser des Codes weniger offensichtlich.
3. Implizite Umwandlung in einen String
Wie oben bereits erwähnt, haben die Java-Entwickler es so gestaltet, dass sich in Java absolut alle Variablen, Objekte und Ausdrücke in den Typ String umwandeln lassen.
Mehr noch: Das geschieht automatisch, wenn wir den Typ String mit einem anderen Typ mittels + kombinieren. Beispiele:
int a = 5;
String name = "Anja" + a; // name enthält den String Anja5
int a = 5;
String city = a + "New York" + a; // city enthält den String 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message enthält den String Hello! 10Yo
In allen drei Beispielen haben wir Variablen der Typen int und String problemlos „addiert“, und das Ergebnis war stets vom Typ String.
Beispiele:
int a = 5;
String name = "1" + a; // name enthält den String 15
int a = 5;
String city = a + "9" + a; // city enthält den String 595
int number = 10;
String code = "10";
String message = "" + number + code; // message enthält den String 1010
Die Addition wird von links nach rechts ausgeführt, daher kann das Ergebnis etwas überraschend sein. Beispiel:
int a = 5;
String name = a + a + "1" + a; // name enthält den String 1015
Auswertungsreihenfolge: ((a + a) + "1") + a
4. Umwandlung eines Strings in eine Zahl
Um in Java eine Zahl in einen String umzuwandeln, reicht es, sie mit einem leeren String zu verketten:
String str = "" + number;
Was aber, wenn man einen String in eine Zahl umwandeln muss? Nun, einen beliebigen String kann man nicht in eine Zahl konvertieren. Besteht der String jedoch nur aus Ziffern, dann geht es. Dafür gibt es in Java eine spezielle Funktion.
So sieht der Befehl aus:
int x = Integer.parseInt(string);
Dabei ist int x die Deklaration der ganzzahligen Variable x, und string ist eine Zahl, die als String angegeben ist (ein String, der nur aus Ziffern besteht).
Beispiele:
String str = "123";
int number1 = Integer.parseInt(str); // number1 enthält die Zahl 123;
int number2 = Integer.parseInt("321"); // number2 enthält die Zahl 321
int number3 = Integer.parseInt("321" + 0); // number3 enthält die Zahl 3210
int number4 = "321"; // Wird nicht kompiliert: Variable vom Typ int, aber der Wert ist vom Typ String
Für negative Werte funktioniert das ebenfalls: Die Funktion Integer.parseInt() ist ziemlich clever.
GO TO FULL VERSION