四類Java8大基本數(shù)據(jù)類型詳解

四類Java8大基本數(shù)據(jù)類型詳解

北大青鳥長沙麓谷校區(qū)      2022-04-20 22:14:01     17

四類Java8大基本數(shù)據(jù)類型詳解,boolean類型Boolean在內存中占用一個字節(jié)。當java編譯器把java源代碼編譯為字節(jié)碼時,會用int或byte來表示boolean。在java虛擬機

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

boolean類型

Boolean在內存中占用一個字節(jié)。

當java編譯器把java源代碼編譯為字節(jié)碼時,會用int或byte來表示boolean。在java虛擬機中,用整數(shù)零來表示false,用任意一個非零整數(shù)表示true。

java虛擬機這種底層處理方式對java虛擬機是透明的,在java源程序中boolean類型的變量取值只能是true或false

byte、short、int、和long整數(shù)類型

byte、short、int、long都是整數(shù)類型,并且是有符號整數(shù)分別占用1、2、4、8個字節(jié)。

取值范圍分別是-127—127、-2的15次方到2的15次方減一、-2的31次方到2的31次方減一、-2的63次方到2的63次方減一

byte在內存中占用一個字節(jié)取值范圍是-128—127。在定義一個變量時。比如月份的取值是1到12。因此把代表月份的month變量定義為byte類型會節(jié)省內存空間。

在實際應用中通常把month定義為int類型,因為這樣可以簡化數(shù)據(jù)運算時強制類型轉換操作。

byte month=1;

month=month+2;//編譯錯誤需要強轉

month=(byte)(month+2);//編譯正確

Java中整型常量數(shù)值的默認類型是int類型

char字符類型

char是字符類型占用兩個字節(jié),java語言對字符采用Unicode字符編碼。

char是按照字符存儲的,不管英文還是中文,固定占用占用2個字節(jié),用來儲存Unicode字符。范圍在0-65536。

utf-8與utf-16都是處理Unicode編碼,它們的編碼規(guī)則不太相同

utf-16的編碼效率高,從字節(jié)到字符的相互轉換更簡單,進行字符串操作也更好。它適合在本地磁盤和內存之間使用,可以進行字符和字節(jié)直接的快速切換,

如java的內存編碼就采用utf-16編碼。但是它不適合在網(wǎng)絡直接的傳輸utf-16采用順序編碼,不能對單個字符的編碼值進行校驗。如果中間一個字符碼值損壞,后面所有碼值都受到影響。

因為網(wǎng)絡傳輸容易損壞字節(jié)流,一旦字節(jié)流損壞就很難恢復。

utf-8更適合網(wǎng)絡傳輸對字符采用單字節(jié)的存儲,對漢字采用三個字節(jié)表示,另外單字節(jié)的損壞也不會影響后面的其他字符,在編碼效率上介于GBK和utf-16之前,在編碼效率和安全上做了平衡

所以utf-8是理想的中文編碼方式

上面藍色字體部分看起來自相矛盾(用char聲明漢字)下面解釋一下Unicode編碼和UTF編碼

Unicode編碼由國際Unicode協(xié)會編制,收錄了全世界所有語言文字中的字符,是一種跨平臺的字符編碼USC(Universal Character Set)是指采用Unicode編碼的通用字符集。Unicode有兩種編碼方案。

用兩個字節(jié)(16位)編碼,采用這個編碼方案的字符集稱為UCS-2。java語言采用的就是兩個字節(jié)的編碼方案

用四個字節(jié)(32位)編碼(實際上只用了31位,最高位必須為0),采用這個編碼的字符集被稱為UCS-4。

UTF編碼:有些操作系統(tǒng)不完全支持16位或32位的Unicode編碼,UTF(UCS Transformation Format)編碼能夠把Unicode編碼轉換為操作系統(tǒng)支持的編碼,常見的UTF編碼有utf-8,utf-7,utf-16

總結:上面藍色字體看似矛盾的部分是因為utf編碼對Unicode(UCS)進行了轉換和優(yōu)化

float和double浮點類型(帶小數(shù))

float:占四個字節(jié),共32位,稱為單精度浮點數(shù)

double:占八個字節(jié),共64位,稱為雙精度浮點數(shù)

Java中的浮點型常量數(shù)值默認是double類型

注意:java提供的浮點類型不適合進行精確的運算

解決辦法:java.math.BigDecimal類可以滿足用戶的精度注意構造BigDecimal類時構造方法中的參數(shù)不建議是浮點類型需要轉成String類型

基本數(shù)據(jù)類型轉換

上面四類八種基本數(shù)據(jù)類型。除了boolean類型。整型浮點型和字符型數(shù)據(jù)可以進行混合轉換

從低位到高位會自動進行類型轉換,(向上轉型)

從高位到低位需要進行強制類型轉換。(向下轉型)

從低位到高位byte、char、short、int、long、float、double

float f=3.14;//編譯錯誤,不能把double類型直接賦值給float類型變量需要強制類型轉換

應用中,強制類型轉換有可能會導致數(shù)據(jù)溢出或者精度下降,應該避免使用強制類型轉換。

下面代碼中把int強制轉換為byte類型,會導致數(shù)據(jù)溢出。

以上就是北大青鳥長沙麓谷校區(qū)java培訓機構的小編針對“四類Java8大基本數(shù)據(jù)類型詳解”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

培訓啦提醒您:交易時請核實對方資質,對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。