14.2 Explizites Casten
 
  Kommen wir zu unserem Problem aus dem letzten Kapitel 14.1 zurück. Wir wollen eine korrekte Division, ohne dass wir Dividend und Divisor.
 
Download:
TypeCast5.java
public class TypeCast5 {

  public static void main (String[] args) {
    int a = 8;
    int b = 3;
    float q = (float)a/b;
    System.out.println(a+"/"+b+"="+q);
  }
}
Ausgabe 8/3=2.6666667
 
  Durch das vor die Variable a gesetzte (float) wird ein expliziter Cast zum Typ float vorgenommen. Damit hat sich der Kontext für den '/'-Operator verändert, es wird eine Fließkommazahldivision durchgeführt.  Statt a zu casten, hätten wir auch b casten können. Die folgende Ausdrücke sind im Ergebnis gleich

(i) (float)a/b   (ii)   a/(float)b   (iii) (float)a/(float)b
 

Beispiel 1 Das aufgezeigte Beispiele für explizites Casten diente dazu die Funktionalität eines überladenen Operators zu steuern. Wir können aber einen expliziten Cast auch ausführen, wenn Java wegen eines möglichen Datenverlustes einen impliziten Cast verweigert. Ein Beispiel soll das zeigen: Wir wollen für die Simulation eines Würfelspiels Zufallszahlen erzeugen. Die Klassenmethode random() aus der Klasse Math erzeugt Zufallszahlen vom Typ double aus dem Intervall [0,1[. Mit
    int zufallsZahl = (int)(6*Math.random()) + 1;

lassen sich zufällige Augenzahl zwischen 1 und 6 erzeugen. 
Beispiel 2 Im Kapitel 14.4 wurde das kleine Programm ASCII.java vorgestellt.
 
  public class ASCII {

  public static void main (String[] args) {
    for (int ascii=0; ascii<128; ascii++){
        System.out.println(ascii+": "+(char)ascii);
    }
  }
}
 
  Jetzt verstehen wir den explizites Cast. Die Variable ascii ist vom Typ int. Wir möchten den Wert als Zeichen darstellen. Dazu müssen wir dem Kompiler mitteilen, dass wir diese Interpretation wünschen
   
zu 14.3 Übung
zur Startseite www.pohlig.de  (C) MPohlig 2005