Java是一種強類型語言,必須為每一個變量聲明一種類型。Java共包含8中基本類型,其中4種整型、2種浮點型、1種用于表示Unicode編碼的字符單元的字符類型char和1種用于表示真值的boolean類型。
整型用于表示沒有小數部分的數值,但是允許是負的。Java包含4種整型:
int:4字節
short:2字節
long:8字節
byte:1字節
長整型數值有一個后綴L(如,999999999L)。十六進制有一個前綴0x(如,0xabc)。八進制有一個前綴0,例如011表示八進制中的9。
從Java 7開始,加上0b可以表示二進制數,例如0b101就是5。另外可以為數字字面量添加下劃線(_)。如1000_000表示一百萬。加下劃線只是為了易讀。
浮點數表示有小數部分的數值。在Java中有兩種浮點類型:
float:4字節
double:8字節
double表示的數值精度為float的兩倍。在實際開發中,大部分情況下使用double而不使用float。
float類型有一個的數值后綴F或f或D(如,1.72F)。在沒有后綴F的浮點數值(如,1.72)默認為double類型。
三個表示溢出和出錯情況的三個特殊的浮點數:
正無窮大 Double.POSITIVE_INFINITY
負無窮大 Double.NEGATIVE_INFINITY
NaN(不是一個數),判斷“非數值”,可以使用Double.isNaN方法
char類型用于表示字符常量。例如:'A'是編碼為65所對應的字符常量。而"A"表示一個包含字符A的字符串。Unicode編碼單元可以表示為十六進制,其范圍從\u0000到\uffff。除了采用轉義序列符\u表示Unicode代碼單元的編碼之外,還有一些表示特殊字符的轉義序列符,(如,\b退格,\n換行等)。
boolean類型有兩個值:false和true。用來判斷邏輯條件。整型值和boolean值之間不能進行相互轉換。
數值類型之間的轉換
在程序運行時,經常要將一種數值類型轉換為另一種數值類型。
圖中是實心箭頭表示無信息丟失的轉換;虛箭頭表示可能有精度損失的轉換。當兩個不同類型的數據進行計算時,先要將兩個操作數轉換為同一種類型,然后再進行計算。
如果兩個操作數中有一個double類型,另一個操作數就會轉換為double類型。
否則,如果其中一個操作數為float類型,另一個操作數就會轉換為float類型。
否則,如果其中一個操作數是long類型,另一個操作數就會轉換為long類型。
否則,兩個操作數都將被轉換為int類型。
在必要的時候,int類型會自動轉換為double類型。但另一方面,有時也需要將double轉換為int。Java允許這種數值之間的類型轉換。這種轉換有可能丟失一些信息,在這種情況下,需要通過強制類型轉換實現這種操作。
這樣,變量n的值為9。強制類型轉換通過截取小數部分將浮點值轉換為整型。
如果對浮點數進行舍入運算,以便得到最接近的整數,可以使用Math.round方法:
這樣,變量n的值為10。當調用round時,仍然需要調用強制類型轉換。因為round方法返回的結果為long類型。