2

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

4

3 回答 3

1

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

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

int value = b ? 1 : 2; // if b is true, value will be 1, else 2.
于 2013-09-28T22:21:09.413 回答
1

Java 开发人员不希望 Boolean 隐式转换为任何 int 类型,因为它在 C 语言中是模棱两可的。请看这个问题

于 2013-09-28T22:24:47.350 回答
0

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

对于 JVM 级别的布尔值也是如此,不同之处在于您不需要对它们进行这些操作(true > false 似乎有点随意),而需要对 chars 进行操作来实现诸如字符编码转换和大小写之类的事情转换。

于 2013-09-29T09:50:40.193 回答