Java编程语言中的布尔范围

3
我在《SCJP 6.0》书中找到了以下段落。最后一句话是什么意思?要阅读哪本书才能了解这些变量实际上如何存储在内存中?谢谢。
“That's virtual-machine dependent.” 最后一句话的意思是:“这取决于虚拟机。” 对于布尔类型,没有范围;一个布尔值只能为true或false。如果有人问你布尔类型的位深度,请直视他们的眼睛,并说:“这取决于虚拟机。” 他们会对你印象深刻。
3个回答

7
这意味着布尔值仅需要是truefalse,无论底层实现如何。

JLS指出:

布尔类型只有两个值:true和false。

对于整数类型:

整数类型包括byte、short、int和long,它们的值分别是8位、16位、32位和64位的带符号二进制补码整数,以及char,其值为16位无符号整数,表示Unicode字符。

因此,对于整数类型,您需要指定位深度,但在实现自己的JVM时,您可以将布尔值表示为单个位、字节或多字节变量。


1
所说的是,虚拟机可以将布尔值实现为整数,其中正值为true,0或负值为false。这个想法是,只要虚拟机严格处理布尔值为true或false,虚拟机在操作系统级别如何实现布尔值就无关紧要了。

0

这完全取决于虚拟机,因为他们希望你谨慎使用boolean。当然,你会一直使用它们,但在给定的类中,你很可能不会有超过几个。

你肯定不会有像boolean[]这样的东西 - 他们为此制作了java.util.BitSet。保持boolean任意大小(8、16、32位)并保持简单比另一种选择更有意义,否则本质上将是一个BitSet内部跟踪所有布尔值。在我看来,那将是一个糟糕的设计决策。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接