java - 为什么 Java 的 "widening path"上没有 char 类型?

标签 java type-conversion

我理解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 的拓宽路径上?谢谢。

最佳答案

charint 当然是扩大转换。但 intchar 不是,因为您似乎是根据第二个 switch 语句来思考的。其中,它实际上是 case 中的 '1' char 类型,根据其 unicode 代码点转换为 int 类型。另外,JLS §5.1.2 - Widening Primitive conversion明确指出从 charint 的转换范围扩大。

关于java - 为什么 Java 的 "widening path"上没有 char 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22630212/

相关文章:

java - 一种算法,给出所有可能的不同数组,其正整数元素之和为给定数字

java - 混淆 mySql 转储文件中的关键字段以保护隐私

java - gradle 从文件夹创建多个 war 文件

java - 检索数字的第一个数字

c - 指针声明中的错误数据类型

Java私有(private)字段的继承

java - 如何从 persistence.xml 引用外部 hibernate.cfg.xml

go - golang中接口(interface)指针和接口(interface)值有什么区别

c++ - 将字符串转换为整数或 double

python - Pandas 的 Convert_dtypes 不适用于标记为对象的数字