Java数据类型的转换
Java是一种强类型语言,针对每种数据都提供了对应的数据类型,每种类型所占的字节数也不同,因此,所能表示的范围也有所不同,从而就会涉及到数据类型转换。
默认转换
1、 byte,short,char -- int -- long -- float -- double
2、byte,short,char之间不互相转换直接转换成int类型不参与运算
3、long(8个字节)为什么可以自动向float(4个字节)转换?
4、long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。 而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的: V=(-1)^s * M * 2^E 667x190 浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。 其中第1位,符号位,即S。 接下来的8位,指数域,即E。 剩下的23位,小数域,即M,M的取值范围为[1,2)或[0,1)。 也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却比长整型的最大值要大。 这也就是为什么在数据转换的时候,long类型转换为float类型的根本原因所在!
强制转换
1、 格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据)
2、 注意:可能有精度的损失
3、思考和面试题1: byte b1 = 127; byte b2 = (byte)128; //-128 byte b3 = (byte)129; //-127 byte b = (byte)130; // -126
4、思考和面试题2: 下面的程序有问题吗,如果有,在哪里呢? byte b1 = 3; byte b2 = 4; byte b3 = b1 + b2;//报错 byte b4 = 3 + 4;//7