1)整数类型
整数类型在java中有四种,分别是byte,short,int,long;这四种类型的区别 主要是所占字节的不同,或者说表示的数值范围不同,具体的见上图
。 整数类型的四种表达形式:
a)二进制形式:0B或0b开头(java7新特性)int i=0b10101
b)八进制形式:以0开头 如 int i=01234
c)十进制形式:如 int a=5
d)十六进制形式:以0x或0X开头,如int a=23
整数类型常量字面量默认是int型,声明long类型的要在变量后加上‘l’或‘L’,
2)浮点型:浮点型常量表示有两种
a)直接使用小数点表示:如float i=3.1
b)科学技术法:3.1E2,表示3.1乘以10的2次方
浮点类型常量字面量默认是double类型,声明float类型的要在变量后面加上“f”或“F”。
注意这两种类型均不能精确的表示一个小数,在开发中表示精确的数,我们常用BigDecimal
3)字符型
表示16为无符号整数或者unicode字符,java对字符采用unicode字符编码。
char常量有以下表示形式:
a)直接在单引号内指定字符常量如‘A’
b)直接作为整数类型使用,但是数据范围在【0,65535】但打印出来的值依然是ascll
c)直接作为整数类型使用,只不过表示的是16进制的数值,格式‘\uX‘,
4)boolean类型
值只能是true或false,不可以使用0或非0的整数来代替,但是其低层实现使用0表示false,1表示true
扩展:
二进制 0b开头
八进制 0开头
十六进制 0x开头 0~9 A~F
算钱时float和double会有问题。
float 有限的,离散,舍入误差,大约,接近但是不等于
最好避免使用完全浮点数进行比较
用BigDecimal 数学工具类
所有字符的本质还是数字,可int强制转换
查unicode表对应数字 0-65536
强制转换 (类型)变量 高-->低
自动转换
byte --> short(char) --> int --> long --> float --> double
不能对布尔值进行转换
不能把对象类型转换成不相干的类型
高容量转换成低容量的时候,强制转换会导致内存溢出或者精度问题
数值较大的数在运算时也可能会溢出