Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。

转换规则

  1. 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);
    }
}

image.png

强制转换

将 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个字节,可能造成数据丢失。