Casting Variablen in Java
Dieses Tutorial stellt vor, wie man Variablen umwandelt oder eine Variable in einen anderen Typ in Java konvertiert.
Casting wird verwendet, um einen Wert/eine Variable in einen anderen Typ in einer Programmiersprache umzuwandeln/umzuwandeln. Java unterstützt eine Vielzahl von Datentypen wie int
, float
, double
, boolean
usw., und beim Schreiben von Code kann es erforderlich sein, Variablen umzuwandeln.
Java unterstützt zwei Arten von Casting, implizites und explizites Casting. Wenn wir int
in long
oder double
umwandeln, tut Java dies implizit, weil long
und double
mehr Bytes als int
verwenden, und wir machen das Gegenteil (d. h. konvertieren double
in int
), dann kann es aufgrund der ganzzahligen Kapazität zu Datenverlust kommen.
Java erlaubt also implizites Casting zwischen niedrigeren zu höheren Datentypen, aber explizites Casting für höhere zu niedrigeren Typen. Lassen Sie uns anhand einiger Beispiele verstehen.
Implizites Casting in Java
Hier, in diesem Beispiel, wandeln wir int
in den Typ float
um, implizites Casting. Da Java implizites Casting ohne viel Code erlaubt, funktioniert dieser Code einwandfrei.
public class SimpleTesting {
public static void main(String[] args) {
int a = 23;
System.out.println("int " + a);
// int to float - implicit casting
float f = a;
System.out.println("float " + f);
}
}
Ausgabe:
int 23
float 23.0
Explizites Casting in Java
In einigen Fällen erfordert Java aufgrund von Datenverlusten ein explizites Casting.
Wenn wir zum Beispiel ein float
auf int
umwandeln, wird der Wert nach dem Dezimalpunkt abgeschnitten; Aus diesem Grund tut Java dies nicht implizit und gibt einen Kompilierungsfehler aus. Siehe das Beispiel unten.
public class SimpleTesting {
public static void main(String[] args) {
float a = 23;
System.out.println("float " + a);
// float to int - explicit casting
int f = a;
System.out.println("int " + f);
}
}
Ausgabe:
Type mismatch: cannot convert from float to int
Dieser Kompilierungsfehler ist eine Warnung an den Programmierer, diesen Datenverlust zu vermeiden. Wenn der Programmierer dennoch umwandeln möchte, erlaubt Java einen Umwandlungsoperator, der den Typnamen in Funktionsklammern einschließt.
Dieser Compiler kompiliert den Code und führt ihn aus, sieht jedoch, dass der Wert abgeschnitten wird. Siehe das Beispiel unten.
public class SimpleTesting {
public static void main(String[] args) {
float a = 23.5f;
System.out.println("float " + a);
// float to int - explicit casting
int f = (int) a;
System.out.println("int " + f);
}
}
Ausgabe:
float 23.50
int 23
Wir können auch die Methode cast()
verwenden, um den Objektwert in einen primitiven Wert umzuwandeln. Siehe das Beispiel unten.
public class SimpleTesting {
public static void main(String[] args) {
Integer a = 23;
System.out.println("integer " + a);
// float to int - explicit casting
int i = (Integer.class.cast(a));
System.out.println("int " + i);
}
}
Ausgabe:
integer 23
int 23
Vermeiden Sie CastException
in Java
Das Casting von Java-Objekten ist ebenfalls ein wichtiges Anliegen, das vor dem Casting den richtigen Klassentyp erfordert. Wenn wir zum Beispiel einen float
-Typ mit double
umwandeln, lässt Java dies nicht zu und wirft ClassCastException
auf die Konsole.
Siehe das Beispiel unten.
public class SimpleTesting {
public static void main(String[] args) {
Number num = new Float(15.5);
System.out.println(num);
Double d = (Double) num;
System.out.println(d);
}
}
Ausgabe:
15.5
Exception in thread "main" java.lang.ClassCastException