我在SCJP 6.0的書中找到了下面的段落。上一條語句的含義是什麼?這本書是關於如何將這些變量實際存儲在內存中的?非常感謝。Java編程語言的布爾範圍
「這是與虛擬機有關的。」
對於布爾類型沒有範圍;一個布爾值只能是true或false。如果 有人問你一個布爾值的位深度,直接看看它們,並且 說,「這是依賴於虛擬機的。」他們會留下深刻的印象。
我在SCJP 6.0的書中找到了下面的段落。上一條語句的含義是什麼?這本書是關於如何將這些變量實際存儲在內存中的?非常感謝。Java編程語言的布爾範圍
「這是與虛擬機有關的。」
對於布爾類型沒有範圍;一個布爾值只能是true或false。如果 有人問你一個布爾值的位深度,直接看看它們,並且 說,「這是依賴於虛擬機的。」他們會留下深刻的印象。
這意味着,從布爾唯一需要的是要真正或假,不管是底層實現。
JLS狀態:
布爾類型正好有兩個值:true和false。
凡整數類型:
積分類型是字節,短,int和長,其值是8位,16位,32位和64位的符號的二進制-complement整數和char,其值是表示Unicode字符的16位無符號整數。
所以你需要的比特深度整數類型,但它僅僅取決於你,如果你的布爾值會在內存中,當你實現你自己的JVM中的單個位,字節或字節變量表示。
所謂的是,一個虛擬機可以實現一個布爾值作爲一個整數,其中一個正值爲真,0或負值爲假。這個想法是,只要虛擬機嚴格按照真或假處理布爾值,那麼虛擬機如何在操作系統級實現布爾值並不重要。
謝謝你傑里米。 – 2011-05-03 17:13:53
這完全取決於虛擬機,因爲他們希望你少用一點boolean
。當然,你會一直使用它們,但是在給定的課程中你幾乎不可能超過一小部分。
你是絕對不會有像boolean[]
- 他們爲此目的java.util.BitSet
。把boolean
s作爲他們想要的任何大小(8,16,32位)並且保持簡單比替代方案更簡單,這實際上是一個BitSet
內部跟蹤所有布爾值。這將是一個糟糕的設計決定,imo。
謝謝glowcoder。 – 2011-05-03 17:14:18
謝謝你一月,這很有幫助 – 2011-05-03 17:13:40