java.sun.com

   JAVA - Casting


 Startseite
 Grundlagen

 Indexverzeichnis


JAVA - Casting

Über das Casting kann eine Konvertierung in einen anderen Datentyp bzw. Objekttyp erzwungen werden.

Zuweisung ohne Casting
Casting von Datentypen
Casting von Objekten
Ad-hoc-Konvertierung

  Seitenende


Zuweisung ohne Casting

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.

  Seitenanfang


Casting von Datentypen

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.

  Seitenanfang


Casting von Objekten

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;

  Seitenanfang


Ad-hoc-Konvertierung

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);
Die Variable str hat den Wert "Ein Text 10" und die Ausgabe auf der Systemebene ist "Die Variable b ist true".

 
weiter:
zurück:
  JAVA - Applets
  Operatoren
  Seitenanfang © 1999-2001  Brit Schröter