首先,我假设是因为您说的是工作量的增加
System.out.println,所以您确实指定了:
char char1 = 'a';
编辑
响应问题(
char1+1;=>
char1 += 1;)的更改,我看到了问题。输出是
a98b
之所以
98显示,是因为char
a被提升为一个
int(二进制数字提升)加1。因此
a变成97(的ASCII值
'a')和98个结果。
但是,
char1 += 1;或者
char1++不执行二进制数字提升,因此它可以按预期工作。
引用JLS,第5.6.2节“二进制数字推广”:
扩展原语转换(第5.1.2节)适用于转换以下规则指定的一个或两个操作数:
如果一个操作数的类型为double,则另一个将转换为double。
否则,如果其中一个操作数的类型为float,则另一个将转换为float。
否则,如果其中一个操作数的类型为long,则另一个将转换为long。
否则, 两个操作数都将转换为int类型 。
(强调我的)



