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
注意:整型值和布尔值之间不能进行相互转换。