1.自动类型转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。自动类型转换不会发生精度的损失。
例如:
int i = 10;
double d = i;
System.out.println(d);//结果为10.0
当使用两个不同类型数值进行二元操作时,先要将两个操作数转换为同一种类型,然后再进行计算。
- 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。
- 否则,如果其中一个操作数是float类型,另一个操作数将会转换成float类型。
- 否则,如果其中一个操作数是long类型,另一个操作数将会转换成long类型。
- 否则,两个操作数都将被转换为int类型。
注:图中实心箭头表示无信息丢失的转换,虚箭头表示可能有精度损失的转换。
2.强制类型转换
把一个数据范围大的数值或变量赋值给另一个表示数据范围小的变量。会有精度的损失。其语法格式是在圆括号中给出想要转换的目标类型,后面紧跟带转换的变量名。例如:
double d = 9.997;
int i = (int) d; //此时变量i的值为9
从例子中可以看出转换后的数据丢失了一部分信息,所以一般情况下不建议使用强制类型转换。
如果想要对付点