簡體   English   中英

Boolean 范圍在 Java 編程語言

[英]Boolean range in Java programming language

我在 SCJP 6.0 書中找到了以下段落。 最后一條語句是什么意思。關於這些變量是如何實際存儲在memory中的,該閱讀哪本書? 非常感謝。

“這取決於虛擬機。”

對於 boolean 類型,沒有范圍; boolean 只能為真或假。 如果有人問您 boolean 的位深度,請直視他們的眼睛並說:“這取決於虛擬機。” 他們會印象深刻的。

這意味着 boolean 唯一需要的是truefalse ,無論底層實現是什么。

JLS指出:

boolean 類型正好有兩個值:真和假。

整數類型的位置:

整數類型為 byte、short、int 和 long,其值分別為 8 位、16 位、32 位和 64 位有符號二進制補碼整數,以及 char,其值為 16 位無符號整數代表 Unicode 個字符。

因此,您需要整數類型的位深度,但當您實現自己的 Z18B5A217C4DAD256639D7D7ZE 時,您的 boolean 是否將在 memory 中表示為單個位、字節或多字節變量,這完全取決於您。

所說的是VM可以將boolean實現為integer,其中正值為真,0或負值為假。 這個想法是,只要 VM 將布爾值嚴格地處理為 true 或 false,VM 如何在操作系統級別實現布爾值並不重要。

它完全取決於虛擬機,因為他們希望您謹慎使用boolean 當然,您會一直使用它們,但在給定的 class 中,您極不可能擁有多個。

你絕對不會有類似boolean[]的東西——他們為此目的制作了java.util.BitSet boolean保留為他們想要的任何大小(8、16、32 位)並保持簡單比替代方案更有意義,這基本上是一個BitSet內部跟蹤所有布爾值。 那將是一個糟糕的設計決定,imo。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM