不允许似乎是合理的
int a = 8;
boolean b = (boolean)a;
因为这可能导致程序员错误,因为对于偶数整数,结果布尔值将是错误的,但为什么不扩大强制,例如int a = true
工作?
编辑:
根据 JVM 规范,第 3.3.4 节:
Java 虚拟机使用 1 表示 true 和 0 表示 false 对布尔数组组件进行编码。在 Java 编程语言布尔值由编译器映射到 Java 虚拟机类型 int 的值时,编译器必须使用相同的编码。
例如:
public static boolean returnFalse() {
return false;
}
public static boolean returnTrue() {
return true;
}
编译为:
public static boolean returnFalse();
Code:
0: iconst_0
1: ireturn
public static boolean returnTrue();
Code:
0: iconst_1
1: ireturn