黑马程序员技术交流社区

标题: Java基础--逻辑运算符“+=” [打印本页]

作者: michael_wlq    时间: 2015-8-24 15:08
标题: Java基础--逻辑运算符“+=”
本帖最后由 michael_wlq 于 2015-8-24 17:17 编辑

思考:                                short  s = 3;
                s = s + 2;
                s + = 2;   
有什么区别?   

解答: s = s + 2 // 编译失败。该语句先做加法,再做赋值运算,分两步,首先s + 2中的s会被提升为int类型,运算后的结果还是int类型,int类型赋值给short类型会失精度,从而无法赋值给short类型,编译失败。
           s + = 2 // 编译通过。因为+=运算符只做赋值运算,在给s赋值时,自动完成了强转操作,判断出int类型的5在short表示范围内,所以会先强制转换成short类型,然后赋值成功。





作者: cc3441251    时间: 2015-8-24 15:29
学习了谢谢分享
作者: michael_wlq    时间: 2015-8-24 15:35
cc3441251 发表于 2015-8-24 15:29
学习了谢谢分享

客气啦,嘿嘿~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2