Lorsque je lisais le livre de problèmes Java SE8 Silver, il disait: "Le type Char peut être implicitement converti en type int ou en type double." J'ai honte de dire que j'utilise Java depuis des années dans mon entreprise, mais je ne savais pas du tout ce fait.
J'ai donc essayé de découvrir la raison pour laquelle le type char peut être converti en type int ou en type double, mais la raison n'a pas été écrite dans la collection de problèmes, alors je l'ai étudiée moi-même. J'ai essayé de résumer les résultats.
TypeCast.java
public class TypeCast {
public static void main(String[] args) {
char ch = '1';
//Transtypage implicite en type int et type double.
int i = ch;
double d = ch;
System.out.println(ch + "Résultat de la conversion en type int: " + i);
System.out.println(ch + "Résultat de la coulée en double type: " + d);
//Passez le type char comme argument à une méthode dont l'argument est de type double.
foo(ch);
}
static void foo(double d) {
System.out.println("type double: " + d);
}
}
Résultat de la conversion de 1 en type int: 49
Résultat du casting 1 en double type: 49.0
type double: 49.0
En regardant la classe de wrapper de type char API de type caractère, "Représentation de caractères Unicode" Est écrit. Donc, si vous regardez "1" dans la table Unicode, la valeur est "U + 0031". Vous pouvez voir qu'il est représenté par.
Les valeurs de la table Unicode sont en hexadécimal, qui est en fait "0x31", donc si vous le changez en décimal, ce sera "49". En d'autres termes, si le type char "1" est implicitement converti en type int, ce "49" est stocké dans la variable de type int.