short a = 1; a = a + 1; 有什么错? short a = 1; a += 1; 有什么错?
a + 1 运算时将自动提升运算类型为 int ,再将 int 类型 赋值给short类型的a时,编译器会报需要强制转换类型的错误;
a += 1 等同于a = a + 1 ,但 += 是java语言规定的运算符 ,编译器会对其进行特殊处理 ,表达式右边的结果会自动转换为与表达式左边相同的类型 ,即a + 1会自动转换为short类型 ,所以a += 1 能正确编译;