回覆列表
-
1 # 城北老城
-
2 # 會點程式碼的大叔
Java 的基本資料型別是 Java 學習的基礎,讓我們看看 Java 的基本資料型別都有哪些?
01. 基本資料型別Java 中一共有 8 種基本資料型別:
其中 boolean 比較特殊,在 java 規範中給出了 boolean 當做 int 處理(4 byte),boolean 陣列用 byte 陣列實現(1 byte)的定義,具體還要看虛擬機器實現是否按照規範實現。
裝箱與拆箱:基本型別與其對應的包裝型別之間自動進行轉換。
Integer x = 1; // 裝箱:基本型別轉包裝型別,1 是 int 型別,呼叫了 Integer.valueOf(1)
int y = x; // 拆箱:包裝型別轉基本型別,呼叫了 x.intValue()
02. 自動型別轉換由低位元組向高位元組自動轉換;黑線表示無資料丟失,紅線表示可能發生精度丟失。
03. 強制資料轉換由高位元組向低位元組轉換,存在精度損失的風險,需要在程式碼中強制轉換。
int n = (int)56.56
04. 型別提升操作不同資料型別,會自動向位元組更大的資料型別提升。
所有的byte,short,char型的值將被提升為int型;有一個運算元是long型,計算結果是long型;有一個運算元是float型,計算結果是float型;有一個運算元是double型,計算結果是double型。05. 隱式型別轉換讓我們看看這幾行程式碼:
ch = ch + 1 : 因為 1 是 int 型別,ch + 1 會轉成更高範圍的 int ,所以這裡編譯會報錯,cannot convert from int to char
ch ++ : 會正常編譯執行,結果是 "b",因為這裡有個隱式型別轉換,相當於 ch = (short) (ch + 1)
第一種型別:整數型別,它包括long、int、short、byte這四種類型,依次所佔據的位數為64、32、16、8位,這樣這四種類型在有符號數的前提下可表示的資料範圍如下所示。
我們使用程式進行驗證,可以證實我們的結論。
我們使用程式進行驗證,可以證實我們的結論。其中使用到的Byte、Short、Integer與Long都是四種基本型別的封裝類,這個我們後面再說。
接下來介紹字元型別。字元型別用char表示,在記憶體中佔用兩個位元組即16位,用於儲存英文字母、標點符號等字元,每個字元用一對單引號""引起來。在計算機中用不同的0、1組合表示不同的字元,於是有不同的編碼。為了保證不同編碼之間的編碼衝突,Java採用了Unicode編碼,它為每一個字元確定了一個唯一的編碼。
這樣,從某種意義上講,char字元也是一種特殊的整數型別。我們可以實現char與整數的自動轉化。(在unicode中"a"用97表示)
接著介紹浮點型別float與雙精度浮點型別double。float型別在記憶體中佔據4個位元組,表示範圍大約在-3.4*10^38到3.4*10^38之間。double型別在記憶體中佔據8個位元組表示範圍大約在-1.7*10^308到1.7*10^308之間。至於原因,涉及到浮點數在記憶體中表示,這裡不再贅述,後面會詳細解釋。
預設的浮點數型別為double。因此若將一個浮點數直接賦值給一個float變數是錯誤的,必須在陣列後加上f或F。
最後一種布林型別boolean的變數值只有true與false兩種,用於表示條件判斷的真與假。這個型別可能有些抽象,我們會在後面的程式中經常遇到,讀者可以認真體會。