91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的boolean類型

發布時間:2020-06-10 15:14:50 來源:億速云 閱讀:458 作者:元一 欄目:編程語言

boolean 數據類型 boolean 變量存儲為 8位(1 個字節)的數值形式,但只能是 True 或是 False。boolean 變量的值顯示為 True 或 False(在使用 Print 的時候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的時候)。使用關鍵字 True 與 False 可將 boolean 變量賦值為這兩個狀態中的一個。在java中boolean值只能是true和false,而不能用0和1代替,并且一定要小寫。boolean operate是指布爾運算。

每個boolean類型的變量中存儲的是一個true或者是false的邏輯值。那么存儲這個邏輯值,需要多大的空間呢?從理論上來講,存儲這個邏輯值只需要1個位(bit)就可以了,很多教科書上談到這個問題的時候,也說boolean類型的數據在內存中只占1個位。

但是稍微有點計算機常識的人都知道:計算機完成尋址操作的時候,是以字節為最小單位進行的。也就是說每次要讀取內存中數據的時候,最小只能精確到1個字節,不能單獨讀取某個位上的信息。如果boolean類型的變量的值只占1個位,計算機每次讀取到1個字節的信息,里面會包含8個boolean變量的值。計算機就不得不通過某種算法去確定這8個值中,哪一個才是我們要找的值。這樣做顯然非常不合理,因為要完成這個“8選1”的操作又會增加運算工作量。那么Java虛擬機到底是怎樣存儲boolean值呢?

為了徹底說清楚這個問題,我們還要刨一刨老底。每次JDK出新版本的時候,Java官方都會發布一個對應版本的《虛擬機規范》。在《虛擬機規范》中,對boolean類型的存儲有專門的解釋,文中說到:“雖然定義了boolean這種數據類型,但是只對它提供了非常有限的支持。在Java虛擬機中沒有任何供boolean值專用的字節碼指令,Java語言表達式所操作的boolean值,在編譯之后都使用Java虛擬機中的int數據類型來代替,而boolean數組將會被編碼成Java虛擬機的byte數組,(因此)每個boolean元素占8位”。

按照這樣的說法我們可以得知:boolean類型的數據如果單獨使用,占4個字節的空間,而如果存儲到boolean數組中,每個元素又只占1個字節。
緊接著問題又來了:單獨使用boolean類型數據的時候,為什么要用4個字節來存儲呢?用1個或2個字節存儲豈不是更節省空間嗎?我們必須知道,當下大部分處理器都是32位的(不是操作系統的32位,而是指CPU硬件),把boolean型數據存儲成4個字節(32位),存取效率是最高的。

最后還會有小伙伴問:《虛擬機規范》中是這么規定的,但在實現虛擬機的時候,真是按這樣的規定來執行嗎?為了說清楚這個問題,我們又要科普一個小常識:世界上并非只有Oracle一家公司實現了Java虛擬機(JVM),也有其他廠商或機構會發布自己的Java虛擬機實現。這些廠商或機構在自己的虛擬機中,是否完全按照《規范》的規定來存儲boolean型數據就不得而知了。他們會綜合考慮運算效率與存儲空間兩方面的性能。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台北市| 临朐县| 舞阳县| 香港| 犍为县| 铜山县| 阿鲁科尔沁旗| 若尔盖县| 大余县| 湟中县| 天镇县| 道孚县| 永寿县| 五台县| 沁阳市| 南雄市| 蒲江县| 额敏县| 普兰县| 昭苏县| 从江县| 西乡县| 正安县| 高州市| 宜春市| 新闻| 九龙坡区| 金阳县| 南京市| 道真| 樟树市| 尚志市| 麦盖提县| 广水市| 通化县| 房山区| 东平县| 会理县| 武乡县| 林州市| 商南县|