问题:
public class Operator {
public static void main(String[] args) {
opreator1();
opreator2();
}
private static void opreator1() {
short s = 1;
s = s+1;//会报错
System.out.println(s);
}
private static void opreator2() {
short s = 1;
s += 1;
System.out.println(s);//输出2
}
}
相信大家测试上述代码时会看到opreator1()会报错opreator2()可以运行。
opreator1()报错原因
整数的数据类型默认是int类型。而数据类型的转换是:
: byte,short,char – int – long – float – double
所以s+1默认转换为int类型。
opreator2()可以运行原因
s += 1;等价于s = (s的数据类型) (s+1)