String abc="aaa";
char c=abc.charAt(i);
c+=4;
以上如果把:c+=4; 改成:c=c+4;
就不正确。
********************************************************************************************************************************************************************************************************************************************************************
c+=4;
c=c+4;
当c是int类型的时候,这两个表达式是一样的,但是c不是int时,这两个表达式是不一样的。
这两个表达式都被称为赋值表达式。第二条语句使用的是简单赋值操作符(=),而第一条语句使用的是复合赋值操作符。(复合赋值操作符包括 +=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、^=和|=)Java语言规范中讲到,复合赋值 E1 op= E2等价于简单赋值E1 = (T)((E1)op(E2)),其中T是E1的类型,除非E1只被计算一次。
换句话说,复合赋值表达式自动地将它们所执行的计算的结果转型为其左侧变量的类型。
所以要让c=c+4 编译能通过,得
int a=c;
c=(char)(a+4);
System.out.println(c);