java 中 byte a = 1; a += 1和 a = a + 1 有什么区别?

byte a = 1;

a += 1;

System.out.println(a);

a += 1; 会被编译为:byte a = (byte)(a + 1);

a = a + 1 呢?编译时会报错。

因为 1 默认是 int 类型 byte + init 类型会隐私转换为 int 类型,将 int 类型直接分配给 byte 类型就会报错

一般会采用强制转换的形式:a = (byte) (a + 1);