原文地址:

https://juejin.cn/post/7031459003540439076

存在区别,主要区别为数据类型转换导致的运算时精度问题

  1. 在两变量为相同数据类型时,计算结果不存在精度丢失和偏差;
  2. 在两变量为不同数据类型时,计算过程中会进行数据类型转换,其转换遵循”自动类型提升“和”强制类型转换“的规则,故计算结果存在精度丢失和偏差;

a的数据类型级别小于b,遵循强制类型转换规则


public static void main(String[] args) {
    short a = 11;
    int b = 22;
    a += b;//强制类型转换为short类型
    System.out.println(a);//3
}
public static void main(String[] args) {
    short a = 11;
    int b = 22;
    a = a + b;//需要的类型:short,提供的类型:int,编译器报错,只能进行强制类型转换:a = (short) (a + b);
    System.out.println(a);
}

a的数据类型级别大于b,遵循自动类型提升规则


public static void main(String[] args) {
    int a = 22;
    short b = 11;
    a += b;//自动类型提升为int类型
    System.out.println(a);//33
}
public static void main(String[] args) {
    int a = 11
    short a = 22;
    a = a + b;//short的数据类型级别低于int,自动类型提升
    System.out.println(a);//33
}

类型转换补充: