CodeGym /Kurse /JAVA 25 SELF /Konvertierung zwischen Datentypen

Konvertierung zwischen Datentypen

JAVA 25 SELF
Level 2, Lektion 3
Verfügbar

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.

Wichtig! Arithmetische Operationen mit dem Typ String sind nicht möglich. Selbst wenn der String ausschließlich aus Ziffern besteht.

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);
Umwandlung eines Strings in eine Zahl

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.

1
Aufgabe
JAVA 25 SELF, Level 2, Lektion 3
Gesperrt
Zugangscode 🔑
Zugangscode 🔑
1
Aufgabe
JAVA 25 SELF, Level 2, Lektion 3
Gesperrt
Flugnummer ✈️
Flugnummer ✈️
1
Aufgabe
JAVA 25 SELF, Level 2, Lektion 3
Gesperrt
Jahr der Filmveröffentlichung 🎞️
Jahr der Filmveröffentlichung 🎞️
1
Aufgabe
JAVA 25 SELF, Level 2, Lektion 3
Gesperrt
Summierung der Ergebnisse im Spiel 🕹️
Summierung der Ergebnisse im Spiel 🕹️
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION