Als ich das Java SE8 Silver-Problembuch las, hieß es: "Der Char-Typ kann implizit in den Int-Typ oder den Double-Typ umgewandelt werden." Ich schäme mich zu sagen, dass ich Java seit Jahren in meinem Geschäft verwende, aber ich wusste diese Tatsache überhaupt nicht.
Also habe ich versucht herauszufinden, warum char type in int type oder double type umgewandelt werden kann, aber der Grund wurde nicht in die Problemsammlung geschrieben, also habe ich es selbst untersucht. Ich habe versucht, die Ergebnisse zusammenzufassen.
TypeCast.java
public class TypeCast {
public static void main(String[] args) {
char ch = '1';
//Implizit in int type und double type umwandeln.
int i = ch;
double d = ch;
System.out.println(ch + "Ergebnis des Castings zum Typ int: " + i);
System.out.println(ch + "Ergebnis des Gießens auf Doppeltyp: " + d);
//Übergeben Sie den Char-Typ als Argument an eine Methode, deren Argument der Double-Typ ist.
foo(ch);
}
static void foo(double d) {
System.out.println("Doppeltyp: " + d);
}
}
Ergebnis von Casting 1 auf Int-Typ: 49
Ergebnis des Gießens 1 auf Doppeltyp: 49.0
Doppeltyp: 49.0
Betrachtet man die Wrapper-Klasse vom Typ char Zeichentyp-API, "Unicode-Zeichendarstellung" Ist geschrieben. Wenn Sie sich also "1" in [Unicode-Tabelle] ansehen (https://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFF), lautet der Wert "U + 0031". Sie können sehen, dass es durch dargestellt wird.
Die Werte in der Unicode-Tabelle sind hexadezimal, was eigentlich "0x31" ist. Wenn Sie dies also in dezimal ändern, ist es "49". Mit anderen Worten, wenn der Zeichentyp "1" implizit in den Typ int umgewandelt wird, wird diese "49" in der Variablen int type gespeichert.
Recommended Posts