HUX布斯
我有点扩展了提供的答案(因为到目前为止,他们专注于他们自己的“自己的” /人工术语,侧重于对特定语言进行编程,而不是照顾一般情况下(即当事情发生时)创建编程语言的幕后情景。就像类型安全性与内存注意事项有所不同):int不是布尔值考虑 boolean bar = true; System.out.printf("Bar is %b\n", bar); System.out.printf("Bar is %d\n", (bar)?1:0); int baz = 1; System.out.printf("Baz is %d\n", baz); System.out.printf("Baz is %b\n", baz);带输出 Bar is true Bar is 1 Baz is 1 Baz is true第3行上的Java代码(bar)?1:0说明,不能将bar(布尔值)隐式转换(转换)为int。我提出这一点并不是为了说明JVM背后的实现细节,而是要指出,就低级考虑(作为内存大小)而言,确实要优先于值而不是类型安全。特别是如果没有像布尔类型那样真正/完全使用类型安全性,在布尔类型中以如果值\ in {0,1},则强制转换为布尔类型,否则抛出异常。所有人只是说{0,1} 更快的速度。”这就是为什么当完成实际的类型推断时,如果有必要的话,它可能(仍然)最终用所有类型信息实例化包装类(或将其转换/转换为此类)。因此,布尔值和布尔值之间的区别恰好在编译和运行时(有点远,但几乎与instanceof与getClass()一样)。最后,自动装箱比原始装箱慢注意Java可以自动装箱的事实只是“语法糖”。它不会加快任何速度,只是允许您编写更少的代码。而已。仍将类型转换和包装到类型信息容器中。出于性能原因,请选择算法,该算法将始终跳过使用类型信息创建类实例以实现类型安全性的额外工作。缺乏类型安全性是您获得性能的代价。对于具有布尔值表达式的代码,类型安全(当您编写更少并因此隐式代码时)对于例如if-then-else流控制至关重要。