Basisklassen und Casting

Für alle primitiven Datentypen stellt Java jeweils eine Basisklasse zur Verfügung die bequem zur Typumwandlung benutzt werden kann. Dies ist wichtig wenn man zum Beispiel mit einem String der eine Zahl enthält, rechnen möchte. Nachfolgend alle Basisklassen der primitiven Datentypen.

String in int umwandeln:
String text "10"
Integer.parseInt(text);

int in String umwandeln:
int i = 10;
Integer.toString(i);

Für die anderen primitiven Datentypen existieren ebenfalls Basisklassen die entsprechend benannt sind: z.B. Double.parseInt(i) oder Float.toString(s).

Alle Basisklassen enthalten auch noch eine Methode namens valueOf(). Diese Methode tut im Prinzip dasselbe wie z.B. parseInt() nur mit dem Unterschied das es eine ganze Basisklasse, also vom Typ Integer zurückgibt und man wiederum Zugriff auf deren Methoden hat, was nur selten benötigt wird. Deshalb verwendet man eigentlich immer parse.

Casting

Beim Casting wird ein Datentyp in einen anderen kompatiblen Datentyp konvertiert. Kompatible Datentypen sind z.B. Integer und Float, da beide Zahlen enthalten. Nicht kompatibel sind z.B. int und String. Diese können nicht gecastet werden sondern müssen mit „richtig“ konvertiert werden, z.B. über parseInt() oder toString().
Um einen Datentyp in einen kompatiblen Datentyp zu casten setzt man den gewünschten Ziel-Datentyp in Klammern. Bei Float zu int würde das so aussehen:
float f = 10;
int i = (int) f;

Bei einem Casting von Datentypen die nicht primitiv sind, wird nur die Referenz also die Zugriffsart auf das Objekt verändert. Wird ein Objekt in Richtung der Vaterklasse gecastet muss dies nicht angegeben werden, da dies der Kompiler übernimmt. Dies nennt man einen impliziten Cast. So ist es z.B. oft beim ActionListener Handling üblich:
public void actionPerformed(ActionEvent e) {
Object o = e.getSource(); // impliziter Cast

Wird ein Objekt auf in eine abgeleitete Klasse oder Kindklasse gecastet, muss dies explizit angegeben werden. Dies nennt man einen expliziten Cast. Im Beispiel wird das obige Objekt wieder zurück in einen JButton gecastet:
JButton btn = (JButton) o; // explizieter Cast
System.out.print("Beschriftung des Buttons" + btn.getText());
System.out.println();