![]() |
|
|
![]() ![]() |
JAVA - Casting Über das Casting kann eine Konvertierung in einen anderen Datentyp bzw. Objekttyp erzwungen werden.
|
![]() |
Es gibt verschiedene Datentypen, denen ein Wert einer anderen Variable und einem anderen Datentyp zugewiesen werden kann.
Hierzu zählen z.B. kleine Integerdatentypen einem größeren Integer-Datentyp zuzuweisen.
byte => short => int => long
Außerdem können Integer-Datentypen einer float- oder double-Variablen zugewiesen werden.
byte => float
byte => double
int => double
usw.
Die Zuweisung erfolgt einfach über =.
byte b = 10; int i = b; double d = i; |
Der Versuch, einer int-Variablen einen float-Wert zuzuweisen, führt zu einer Fehlermeldung.
![]() |
Für das Zuweisen eines "inkompartiblen" Wertes, gibt es die Möglichkeit, den Wert erst in ein gültiges Format zu casten und dann der Variablen zuzuweisen. Das erfolgt, indem man vor den Wert in Klammern den Datentyp schreibt, in den konvertiert werden soll.
double d = 3.532; int i = (int) d; byte b = (byte) 5.3; |
Dabei kann der Wert von einer Variablen genutzt werden, wie bei (int) d oder man gibt direkt eine Zahl an (byte) 5.3, das in der Regel eher weniger Sinn macht, da ich hier einen korrekten Wert angeben könnte.
Beim Casting wird der Wert angepaßt, d.h. auch, daß er gerundet oder generell verändert werden kann, wenn der Wertebereich (z.B. von byte) nicht eingehalten werden kann, da der zu konvertierende Wert einfach zu groß ist.
![]() |
Auch Objekte können gecastet werden. Hierbei ist allerdings etwas mehr Vorsicht geboten, als bei den Datentypen. Jedes Objekt hat spezielle Eigenschaften und Methoden. Beim Casten können Eigenschaften verloren gehen oder dem neuen Objekt können notwendige Eigenschaften ganz fehlen, da sie noch nicht definiert wurden. Dies führt zu Laufzeitfehlern.
Das Casten von Objekten wird genutzt, um ein Objekt "weiterzuentwickeln", d.h. in ein Objekt zu konvertieren, das in der Vererbungshirarchie weiter unten liegt. Das ganze anders herum zu versuchen führt zu einem Laufzeitfehler, also erst während der Programmausführung.
java.lang.Object || | || +--java.awt.Component || | || +--java.awt.Container || | || +--java.awt.Window || | \--/ +--java.awt.Frame \/
Im obigen Baum wäre es z.B. um ein Container-Objekt in ein Frame-Objekt zu casten.
Container c = new Container(); Frame f = (Frame) c; |
![]() |
Bei der Ad-hoc-Konvertierung werden Datentypen automatisch in den richtigen Datentyp konvertiert. Dies funktioniert z.B. wie oben gezeigt, wenn einer int-Variablen der Wert einer byte-Variablen zugewiesen wird, also ein kleinerer Wert einem größeren zugewiesen wird.
Ein anders, oft genutzte Möglichkeit ist, einen String mit anderen Datentypen zu kombinieren, z.B. mit char, boolean und allen Zahlen-Datentypen.
int x = 10; boolean b = true; String str = "Ein Text " + x; System.out.println("Die Variable b ist " + b); |
weiter:![]() zurück: ![]() |
![]() ![]() |
![]() |
© 1999-2001 ![]() |