进行混合运算的时候,byte、short、char不会相互转换,都会自动提升为int类型,其他类型进行混合运算是小数据类型提升为大数据类型。
byte、short、char-------int-------long-----float------double
long:8个字节
float:4个字节
为什么float比long的范围大呢?用一段代码看一下
通过代码可以看出,long类型的变量值可以赋值给float类型的变量,而float类型的变量值不可以直接赋值给long类型的变量,需要进行强制类型转换。
原因:它们底层的存储结构不同
float占4个字节,32个二进制位
1位代表的是符号位
8位代表指数位,8位最小是00000000,最大是11111111,范围也就是0~255,IEEE 754规范(0代表0,255代表无穷大,剩下的1~254,规定每个指数减去127,指数的范围就变成-126~127,而long的指数范围是0~63,结论:long的取值范围比float小)
23位代表的是尾数位(小数位)