类型转换

  • 在转换的时候要注意避免溢出。

  • 强制转换——(类型)变量名——高到低

  • 自动转换——低到高

注意点:
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。