我编写了两个版本的Java代码,将char变量递增1:
VERSION1:
char c = 'a';
c = c + 1;
版本2:
char c = 'a';
c += 1;
令我惊讶的是,第二个版本编译并成功运行,但第一个版本显示错误,该错误表示不兼容的类型:从int到char的有损转换。他们为什么不同?
答案 0 :(得分:2)
第二个版本涉及演员表,相当于:
c = (char) (c + 1);
参见JLS section 15.26.2(复合运营商):
E1 op= E2
形式的复合赋值表达式等效于E1 = (T) ((E1) op (E2))
,其中T是E1的类型,但E1只被评估一次。