Typumwandlung

aus www.iwiki.de, der freien Wissensdatenbank

Typumwandlungen werden dazu benutzt einen Datentyp in einen anderen Datentyp umzuwandeln. Zum Beispiel um aus einem long einen double zu machen.


Inhaltsverzeichnis

Implizite Typumwandlungen

Bei einer impliziten Typumwandlung muss der Programmierer keine zusätzlichen Schlüsselworte benutzen um eine Typumwandlung durchzuführen. Die Typumwandlung kann implizit erfolgen wenn eine Typvergrößerung vorliegt.


Elementare Typvergrößerung

Eine elementare Typvergrößerung liegt immer dann vor wen ein elementarer Datentyp in einen Datentyp mit größerem Wertebereich umgewandelt wird.

Die Datentypen können in alle Datentypen implizit umgewandelt werden die unter ihnen stehen:

  • byte
  • short / char
  • int
  • long
  • float
  • double

Beispiel für eine Typvergrößerung:

int i = 12312;
long l = i;

Der Wert von Integer i wird in einem Long l gespeichert.


Referenzvergrößerung

Eine Referenzvergrößerung die Möglichkeit Objekte in einer Referenz der Vaterklasse oder eines Interfaces zu speichern. Hierbei ist zu beachten das die Referenz bestimmt welche Methoden verfügbar sind. Kennt eine Vaterklasse eine Methode der Kindklasse nicht so ist diese in der Kindklasse nicht verfügbar solange sie in der Referenz des Vaters steckt. Dasselbe gilt auch für Interfaces.

Beispiel für eine Referenzvergrößerung:

Klasse k;    
Interface i;
Subklasse s; // implementiert das Interface i und ist Subklasse von k.

s = new Subklasse();
k = s;
i = s;

Die Subklasse s kann in einer Referenz für Interface i oder einer Referenz auf Klasse k gespeichert werden.


Typumwandlung in einen String

Ist ein Spezialfall der impliziten Typumwandlung, da jeder Datentyp in einen String konvertiert werden kann. Diese kann am einfachsten durch den + Operator geschehen.

Beispiel für eine Typumwandlung in einen String:

int i = 2;
int n = 4;
String s;

s = i + n; // s = "6"
s = i + "" + n; // s = "24"

Im ersten Beispiel wird als erstes i und n addiert und dann in einen String konvertiert. Im zweiten Beispiel wird i und n in einen String umgewandelt und dann aneinader gehängt.


Explizite Typumwandlung

Die explizite Typumwandlung verlangt das Benutzen eines Casts. Mit diesem Cast teilt der Programmierer dem Compiler mit das er sich darüber bewußt das der Zieldatentyp zu klein sein kann. Der Programmierer sollte vorher geeignete Mittel ergreifen um ein Verfälschen der Daten zuverhindern. Um eine explizite Typumwandlung durchzuführen wird vor den umzuwandelnden Typ eine runde Klammer mit dem Ziel-Typ geschrieben:

Typ t;
ZielTyp z = (ZielTyp)t;


Elementare Typverkleinerung

Eine Elementare Typverkleinerung findet immer dann statt wenn ein Typ mit einem größeren Wertebereich in einen Typ mit kleinerem Wertebereich umgewandelt wird. Die Liste von Elementare Typvergrößerung gilt hier ebenso nur in die andere Richtung von unten nach oben können die Daten explizit gecastet werden.

Beispiel für eine Typvergrößerung:

int i = 12312;
short s = (short)i;

Der Wert von Integer i wird in einem Short s gespeichert.


Referenzverkleinerung

Die Referenzverkleinerung ist die Umkehr Funktion einer Referenzvergrößerung.

Beispiel für eine Referenzverkleinerung:

Klasse k;    
Subklasse s; // s ist Subklasse von k
k = new Subklasse();
s = (Subklasse)k;

Die Subklasse wird in der Referenz für Klasse gespeichert und danach wieder in eine Referenz für Subklasse.

Siehe auch