2011-05-03 61 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