在Java中,为什么char原语隐式转换为int原语?人们说这是因为扩展转换 - 一个2字节的字符串将适合4字节的int,但是布尔值呢?布尔当然占用不到2个字节,但它们并没有被隐式转换。
答案 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似乎有点武断),而对字符的操作需要实现像字符这样的事情编码转换和大小写转换。