原文地址:
https://juejin.cn/post/7031459003540439076
存在区别,主要区别为数据类型转换导致的运算时精度问题
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
}
类型转换补充: