Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
转换规则
byte,short,char --> int --> long --> float --> double
自动规则
练习
public class Test {
public static void main(String[] args) {
int i = 1;
byte b = 2;
//byte x = b + i; 报错
int j = b + i; //int类型和byte类型运算,结果是int类型
System.out.println(j);
}
}
强制转换
将 1.5 赋值到 int 类型变量会发生什么?产生编译失败,肯定无法赋值。
int i = 1.5; //报错
double 类型内存8个字节, int 类型内存4个字节。 1.5 是 double 类型,取值范围大于 int 。可以理解为 double 是8 升的水壶, int 是4升的水壶,不能把大水壶中的水直接放进小水壶去。 想要赋值成功,只有通过强制类型转换,将 double 类型强制转换成 int 类型才能赋值。
转换格式
数据类型 变量名 = (数据类型)被转换数据值;
练习
public class Test {
public static void main(String[] args) {
int i = (int)1.5; //double类型数据强制转成int类型,直接去掉小数点
System.out.println(i);
}
}
强烈注意
- 浮点转成整数,直接取消小数点,可能造成数据损失精度。
- int 强制转成 short 砍掉2个字节,可能造成数据丢失。