Java是強類型語言,對于每一種數據都定義了具體的數據類型,在內存中分配了不同大小的內存空間。
1.整型
- 整數默認int
- 長整型數值有一個后綴 L / l
- 十六進制數前面加 0X / 0x
- 二進制數前面加 0b / 0B
- 八進制數前面加 0 (容易混淆,不要用)
- 可以為數字字面量加下劃線,如1_000_000 (更易讀,java編譯器會移除他們)
- Java沒有任何無符號類型
- 在Java中,所有的數值類型所占據的字節數與平臺無關(P48)
2. 浮點數
- float有效位數6~7位,數值后面加 F/ f ,沒有加的默認為double
- double有效位數15位,可以加后綴 D / d
- 可以使用16進制表示浮點數,0.125可以表示成0x1.0p-3。
- 三個特殊的浮點數值:
- 正無窮大
Double.POSITIVY_INFINITY
(如正整數 / 0 ) - 負無窮大
Double.NEGATIVY_INFINITY
(0/0或者負數的平方根) -
NaN Double.NaN
-
注意:
x==Double.NaN
是錯誤的,因為所有非數值的值都認為是不同的,但可以使用Double.isNaN(x)
-
注意:
-
警告:命令
System.out.println(2.0-1.0)
將打印出0.899999999999999,而不是0.9。其主要原因是浮點數之采用二進制表示,而在二進制中無法精確表示1/10,如果需要在數值計算中不含任何舍入誤差,應該使用BigDecimal類。
- 正無窮大
3.char類型
- char占兩個字節
- Java語言采用的是Unicode編碼。
思考題 :Java語言中的字符char可以存儲一個中文漢字嗎?
可以,因為Java語言中的字符占兩個字節,一個中文漢字占兩個字節。
4.boolean類型
- boolean有兩個值,true和false
注意:整型值和布爾值之間不能進行相互轉換。