为什么Char隐式转换为Int?

时间:2013-09-28 22:17:48

标签: java type-conversion implicit-conversion

在Java中,为什么char原语隐式转换为int原语?人们说这是因为扩展转换 - 一个2字节的字符串将适合4字节的int,但是布尔值呢?布尔当然占用不到2个字节,但它们并没有被隐式转换。

3 个答案:

答案 0 :(得分:1)

布尔值不是数值数据类型,因此未定义隐含转换。

但幸运的是,将布尔值转换为您想要的任何int都很容易:

int value = b ? 1 : 2; // if b is true, value will be 1, else 2.

答案 1 :(得分:1)

Java开发人员不希望Boolean隐式转换为任何int类型,因为它在C语言中不明确。请参阅此question

答案 2 :(得分:0)

需要从char到int的转换,因为没有为chars定义运算符:您无法检查char是否大于另一个char,或者char是否在给定范围内而不首先转换为int。

对于JVM级别的布尔值也是如此,区别在于您不需要对它们执行这些操作(true> false似乎有点武断),而对字符的操作需要实现像字符这样的事情编码转换和大小写转换。