日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java位宽_Java的数据类型

發布時間:2023/12/15 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java位宽_Java的数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java數據類型

Java虛擬機是通過某些數據類型來執行計算的,數據類型及其運算都是由Java虛擬機規范嚴格定義的。

數據類型分為兩種:基本數據類型和引用數據類型。基本類型的變量持有原始值,而引用數據類型的變量持有引用值。

術語“引用值”指的是對某個變量的引用,而不是該對象本身。與此相對的,原始值則是真正的原始數據。

下圖是Java虛擬機中數據類型的描述。

Java語言中的所有基本類型同樣也都是Java虛擬機中的基本數據類型。但是boolean有點特別,雖然Java虛擬機也把boolean看做基本類型,但是指令集對boolean只有很有限的支持。當編譯器吧Java源代碼編譯成字節碼時,他會用int或byte來表示boolean。在java虛擬機中,false是由整數零來表示的,所有非零整數都表示true。涉及boolean值的操作則會用int。另外,boolean數組是當做byte數組來訪問的,但是在“堆”區他也可以被表示為位域。

除了boolean類型外,java語言中的基本類型構成了java虛擬機中的數值類型。

虛擬機中的數值類型分為:整數類型(包括byte,int,long,char)和浮點數類型(包括float,double)。

和java語言一樣,Java虛擬機的基本類型的值在任何地方都是一致的,比如,不管底層的主機平臺是什么,一個long在任何虛擬機中總是一個64為位二進制補碼表示的有符號整數。

java虛擬機中還有一個只在內部使用的基本數據類型:returnAddress,java程序員不能使用這個類型。這個基本類型被用來實現java程序中的finally子句。

java虛擬機的引用類型被統稱為“引用”(reference),有三種引用類型:類類型,接口類型以及數值類型,他們的值都是對動態創建對象的引用。

還有一種特殊的引用值null。他表示該變量沒有引用任何對象。

java虛擬機規范定義了每個數據類型的取值范圍,但是卻沒有定義他們的位寬。存儲這些類型的值所需的占位寬度,是由具體的虛擬機實現的設計者決定的。java虛擬機數據類型的取值范圍如下圖所示:

補充說明

從JDK 5.0開始,Java里面出現了自動拆箱解箱的操作,基于這點需要做一定的說明:

對應原始的數據類型,每種數據類型都存在一個復雜類型的封裝類,分別為Boolean、Short、Float、Double、Byte、Integer、Long、Character,這些類型都是內置的封裝類,這些封裝類(Wrapper)提供了很直觀的方法,針對封裝類需要說明的是,每種封裝類都有一個xxxValue()的方法,通過這種方法可以把它引用的對象里面的值轉化成為原始變量的值,不僅僅如此,每個封裝類都還存在一個valueOf(String)的方法直接把字符串對象轉換為相應的簡單類型。

在JDK 5.0之前,沒有存在自動拆解箱的操作,即Auto Box操作,所以在這之前是不能使用以下方式的賦值代碼的:

Integer a = 0; //這種賦值方式不能夠在JDK 1.4以及以下的JDK編譯器中通過

但是JDK 5.0出現了自動拆解箱的操作,所以在JDK 5.0以上的編譯器中,以上的代碼是可以通過的

Java提供了兩個專門的類進行高精度運算:BigInteger與BigDecimal,雖然Java原始變量都具有對應的封裝類型,但是這兩個變量沒有對應的原始類型,而是通過方法來提供這兩種類型的一些運算,其含義為普通類型能夠做的操作,這兩個類型對應都有,只是因為精度過大可能效率不夠高。至于這兩個類的具體操作可以參考JDK的相關API文檔。

若要求精度的結果,盡量避免使用float和double.

關于基本類型中數值類型的還有一個自動轉換和強制轉換的概念,后續再闡述吧。

字長的考量

java虛擬機中,最基本的數據單元就是字(word),他的大小是由每個虛擬機實現的設計者決定的。jvm規范中明確規定了,字長必須足夠大,至少是一個字單元就足以持有byte、short、int、char、float、returnAddress或者reference類型的值,而兩個字單元就足以持有long或者double類型的值。

因此虛擬機實現的設計者至少得選擇32位作為字長。或者選擇更為高效的字長大小。通常根據底層主機平臺的指針長度來選擇字長。

在Java虛擬機規范中,關于運行時數據區的大部分內容,都是基于“字”這個抽象概念的。比如,關于棧幀的兩個部分-------局部變量和操作數棧------都是按照“字”來定義的。這些內存區域能夠容納任何虛擬機數據類型的值,當把這些值放入局部變量或者操作數棧中時,他將占一個或兩個字單元。

在運行時,Java程序無法偵測到底層虛擬機的字長大小;同樣,虛擬機的字長大小也不會影響程序的行為-------他僅僅是虛擬機實現的內部屬性。

大小: 35.7 KB

大小: 52.4 KB

分享到:

2011-06-21 23:33

瀏覽 1229

評論

總結

以上是生活随笔為你收集整理的java位宽_Java的数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。