我理解Java的自动类型转换可以用一种叫做“加宽路径”的东西来概括,它看起来像这样:
字节 -> 短 -> 整型 -> 长 -> 浮点 -> double
以下代码编译正常,并说明了一些 char/int 转换:
char c = '1';
int i = c; // char to int
// char to int, and vice versa
switch (c) {
case 1:
}
switch (i) {
case '1':
}
考虑到上述所需的转换,为什么 char 类型没有出现在 Java 的拓宽路径上?谢谢。
最佳答案
char
到 int
当然是扩大转换。但 int
到 char
不是,因为您似乎是根据第二个 switch
语句来思考的。其中,它实际上是 case
中的 '1'
char 类型,根据其 unicode 代码点转换为 int
类型。另外,JLS §5.1.2 - Widening Primitive conversion明确指出从 char
到 int
的转换范围扩大。
关于java - 为什么 Java 的 "widening path"上没有 char 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22630212/