package test;
/**
* 测试
* @author 郭胜
*
*/
public class Test {
public static void main(String[] args){
short aa = 1;
aa += 1;//这种写法是正确的
System.out.println(aa);
System.out.println(aa + 1);
short bb = 1;
bb = aa + 1;//这种写法报错;要求强制类型转换
}
}
这两个表达式都被称为赋值表达式。 (x = x + i) 表达式使用的是简单赋值操作符(=),而 (x += i) 表达式使用的是复合赋值操作符。Java语言规范中讲到, 复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))) ,其中T是E1的类型,除非E1只被计算一次。 换句话说,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化原生类型转换。