数据类型和转换
1.数据类型
基本数据类型(8种)
1.整形
A.byte(8位,范围是-128到127)
B.short(16位)
C.int(32位)
D.long (64位)
注意:**给long赋值时,因为整数默认是int类型,要转换为long类型的值,后面加上l或L
上面的byte short int long 最大长度可以通过jdk文档去找到 具体的范围。**
2.浮点型
A.float(单精度32位)
直接赋值时必须在数字后加上f 或F
B.double( 双精度64位)
区别:
对于单精度浮点数,运行速度相比double更快,占内存更小,但是当数值非常大或者非常小的时候会变得不精确。 双精度比单精度表示的位数大 精确的位数多,简单地说, float表示的小数点位数少。
默认浮点数的类型是 double
注意:
表示float 类型 必须加上f 或者F ,例如 float x=1.0f (效果与float x=(float)1.0 一样)
float double 不能精确表示一个小数,例如 1.3*1.4
例如 double num= 1.0, 是一个无限接近1.0的一个值
那怎么更精确的表示浮点数呢?BigDecimal
结论:浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是 因为数的大小,而是因为数的精度。因此,产生的结果接近但不等于想要的结果。尤其在使用 float 和 double 作精确运 算的时候要特别小心。
字符:
A:char
16 位[0-65535] (2个字节,16位) 。字符常量使用单引号 ‘’包裹起来。
表现形式:
1.‘A’最常用,最直观的方式
2.使用一个数字表示,对应有一个ASCII码表
例如:char c = 65;//表示 ’A’ 这个字符
布尔:
值只有两个 true false,不能使用 0 1表示
数据类型的转换
自动转换
1.byte不能转成char
2.char不能转成short
因为两两之间的数据类型范围不包含
在计算中 byte, char ,short ,int 间的运算自动转换成int
-
含有 long,float,double 其中一个或者多个的 ,将自动转成字节数最大的
即是向高字节自动转换
强制转换
目标数据比结果数据类型小的情况下;(即不损失精度,不影响数据
)使用。
eg:
double d=3.14;
int i=(int)d;