A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

解答:
Java规范有这样的规则

1.高位转低位需要强制转换            

2.低位转高位自动转.

对于short s1 = 1; s1 = s1 + 1:

1 是int 型   s1是short型 通过 + 运算后s1 自动转为int 型,等号右边的结果是int,应该使用强转

short s1 = 1; s1 += 1:


+和+=这两个表达式都被称为赋值表达式。(x = x + i)表达式使用的是简单赋值操作符(=),而(x += i)表达式使用的是复合赋值操作符,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),其中T是E1的类型,除非E1只被计算一次。   换句话说,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型

所以s1+=1等效于   s1=(short)(s1+1),所以是正确的。     



评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

11 个回复

倒序浏览
哈哈,我也看过这道题,看了这个我全明白了。
回复 使用道具 举报
我也看了这个题,解释的很明白!~!!
回复 使用道具 举报
果然还是要继续学习的!
回复 使用道具 举报
很详细,赞一个!
回复 使用道具 举报
忽视细节了....幸好看了这个,哈哈
回复 使用道具 举报
呵呵,基础啊,多体会一下吧
回复 使用道具 举报
Eagle 高级黑马 2014-10-28 09:01:37
8#
以前真没有基础到。。学习了。感谢楼主
回复 使用道具 举报
这毕老师的视频上不是说得很清楚了么
回复 使用道具 举报
嗯,不过从编译错误提示就可大致知道问题所在,再用反射求得类型也可以得出此结论。
回复 使用道具 举报
我以为提问题的呢。。。
回复 使用道具 举报
菜鸟小6 来自手机 中级黑马 2014-10-29 12:24:54
12#
很好,很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马