byte b = 1;
b = b + 1; //报错
b = b + b; //报错
b += 1; //正确
b = 1 + 1; //正确
为什么?
原因:
byte,short,char 类型的数在运算时会自动地转成int类型,b和1相加得到2(int),将其赋值给(byte)b时不能自动向下转换,编译器报错
b += 1; 等价于 b = (byte)(b + 1); 已经被强制转换,所以不会报错
byte b = 1;
b = b + 1; //报错
b = b + b; //报错
b += 1; //正确
b = 1 + 1; //正确
为什么?
原因:
byte,short,char 类型的数在运算时会自动地转成int类型,b和1相加得到2(int),将其赋值给(byte)b时不能自动向下转换,编译器报错
b += 1; 等价于 b = (byte)(b + 1); 已经被强制转换,所以不会报错