中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

临沧市| 卢氏县| 拉萨市| 汾西县| 江北区| 贺兰县| 阳西县| 新密市| 深泽县| 剑阁县| 胶州市| 鹿泉市| 图木舒克市| 云安县| 托克逊县| 苍溪县| 枣强县| 大冶市| 灵台县| 门头沟区| 合山市| 黔江区| 武山县| 娱乐| 依兰县| 呼玛县| 江山市| 金门县| 东方市| 延寿县| 宜君县| 南川市| 巴林右旗| 天祝| 奎屯市| 桂阳县| 阜新市| 建平县| 岳阳市| 淅川县| 仁布县|