1.自动转换
在Java中,如果将小范围的值赋值给大范围的变量那么它就可以实现自动类型转换.
自动类型转换的顺序:byte -> short -> int -> long -> float ->double,这里考察的就不是精度问题了,而是范围问题.它是依托于范围大小来转换的.所以在这么转换中,必然存在精度损失.如int自动转换成float,要知道int的精度是大于float的,所以一般如果要将int转成浮点型,是建议将int转成fdouble的.这样就不会有精度损失.
2.强制转换
在自动转换我们说过如果是小范围的值赋值给大范围的变量,就可以实现自动转换.那么反过来,大范围的值赋值给小范围的变量那它就不会自动发生,所以我们就需要强行使他们发生,这就需要强制转换.
强制转换的格式如下:
目标类型 变量名 = (目标类型) 值
如:
int a = 123;
long b = 1234l;
a =(int) b;//此时的目标类型就是int类型,记住强制类型转换用于大范围变小范围
还有一个小地方要注意:
(int) a + b与(int) (a + b)
它们两个是不一样的,前者表示将a强制转换为int类型后再与b进行运算得到结果,而后面那个是将a与b的运算后的结果强制转换为int类型.