🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[success] # 赋值运算符 还有一些简写 `+=、 -=、 *=、 /=` 即 `int a = 1` `a += 1` 等同于 `a = a +1` >[danger] ##### 案例 ;类型转换中`byte、short、char`三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算,也就是当`byte a =10; byte b = 20;` 两者进行相加`int c = a + b;System.out.print(a + b)`为 `int` 类型,但当使用`+=` 这种时候实际是不会进行这种**低到高**的类型转换,而是会强制为自己类型`b -=a;`真正等价于`b = (char )(b-a)` ~~~ public class VarTest{ public static void main(String[] args){ char a1 = 1; char b1 = 2; // 错误: 不兼容的类型: 从int转换到char可能会有损失 // b1 = b1-a1; // b1 = (char )(b1-a1)将结果转换 byte 类型不会报错 b1 -=a1; // 真正等价于b1 = (char )(b1-a1) //+= //规则:将左边和右边进行相加,然后再把结果赋值给左边 int a = 10; int b = 20; //把a+b,再把结果赋值给左边的变量a a += b; //等同于 a = (int)(a + b); System.out.println(a);//30 System.out.println(b);//20 //细节: //+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换 short s = 1; //把左边和右边进行相加,得到结果2,再赋值给左边的变量 s += 1; //等同于:s = (short)(s + 1); System.out.println(s);//2 } } ~~~