混合赋值运算符做算数运算时不改变自身数据类型

Day03_SHJavaTraining_4-5-2017

1.混合赋值运算符(+= -= *= /= %=)

面试题:

1 /**
2     ①byte b = 100;
3     ②b = b + 500;
4     ③b += 500;
5     ④System.out.println("b=" + b);
6 第一种执行方式①②④,第二种执行方式①③④,这两种执行方式会不会报错?如果报错,写出原因,否则写出结果。
7 */

分析:
第一种执行方式:
  一定会报错。因为b是byte类型空间,只占一个字节,而同它运算的500,默认是int类型,占4个字节,由于数据范围小的数据类型和数据范围大的数据类型之间做运算,结果为数据范围大的数据类型,所以报错。
第二种执行方式:
    不会报错。因为混合赋值运算符做算数运算时, 如果得到的运算结果超出了其左边变量的数据类型的取值范围,计算机底层会自动将结果强制转换成混合赋值运算符左边变量的数据类型。结果为88。

原文地址:https://www.cnblogs.com/EzraOholiabXue/p/Day03_SHJavaTraining_4-5-2017_01.html