2011-05-03 39 views
3

我在SCJP 6.0的书中找到了下面的段落。上一条语句的含义是什么?这本书是关于如何将这些变量实际存储在内存中的?非常感谢。Java编程语言的布尔范围

“这是与虚拟机有关的。”

对于布尔类型没有范围;一个布尔值只能是true或false。如果 有人问你一个布尔值的位深度,直接看看它们,并且 说,“这是依赖于虚拟机的。”他们会留下深刻的印象。

回答

7

这意味着,从布尔唯一需要的是要真正,不管是底层实现。

JLS状态:

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

凡整数类型:

积分类型是字节,短,int和长,其值是8位,16位,32位和64位的符号的二进制-complement整数和char,其值是表示Unicode字符的16位无符号整数。

所以你需要的比特深度整数类型,但它仅仅取决于你,如果你的布尔值会在内存中,当你实现你自己的JVM中的单个位,字节或字节变量表示。

+0

谢谢你一月,这很有帮助 – 2011-05-03 17:13:40

1

所谓的是,一个虚拟机可以实现一个布尔值作为一个整数,其中一个正值为真,0或负值为假。这个想法是,只要虚拟机严格按照真或假处理布尔值,那么虚拟机如何在操作系统级实现布尔值并不重要。

+0

谢谢你杰里米。 – 2011-05-03 17:13:53

0

这完全取决于虚拟机,因为他们希望你少用一点boolean。当然,你会一直使用它们,但是在给定的课程中你几乎不可能超过一小部分。

你是绝对不会有像boolean[] - 他们为此目的java.util.BitSet。把booleans作为他们想要的任何大小(8,16,32位)并且保持简单比替代方案更简单,这实际上是一个BitSet内部跟踪所有布尔值。这将是一个糟糕的设计决定,imo。

+0

谢谢glowcoder。 – 2011-05-03 17:14:18