关于赋值的Java面试题

面试题:
(1) short s = 1;
s = s + 1;
(2) short s = 1;
s += 1;
问:上面两个代码有没有问题,如果有,哪里有问题?

答:(1) 第一个是错的,会报错损失精度,因为s这个short类型要参与运算
要改变成int类型,将short类型的s+1赋值给=左边的s会损失精度,要写成
s=(short)(s+1);才对。
(2) 这个输出2,没问题。为什么呢,因为扩展的赋值运算符其实隐含了
一个强制类型转换。
s += 1;
不是等价于 s = s + 1;
而是等价于 s = (s的数据类型) (s + 1);

 

posted @ 2020-02-16 20:40  刘盛哲的学习笔记  阅读(520)  评论(0编辑  收藏  举报