类型转换
-
在转换的时候要注意避免溢出。
-
强制转换——(类型)变量名——高到低
-
自动转换——低到高
注意点:
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把大容量转换到低容量的时候,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题!
-
在图中有6个实心箭头,表示无信息丢失的转换;有3个虚箭头,表示可能有精度损失的转换。
![图片]()
-
强制类型转换通过截断小数部分将浮点值转换为整型。
-
如果想对浮点数进行舍入运算,以便得到最接近的整数(在很多情况下,这种操作更有用),那就需要使用Math.round方法:
double x = 9.997;
int nx = (int)Math.round(x);
现在,变量nx的值为10。当调用round的时候,仍然需要使用强制类型转换(int)。其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型。
警告:如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。例如,(byte)300的实际值为44。
