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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
  前面的就不说了,都看的出来。后面这个答案是没错,s1+=1是对的,但是大部分人给的答案是这样的:
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。什么叫特殊处理什么意思,本着一根筋的精神倒想看看怎么个特殊处理。事实上,这个+=是复合赋值操作符,Java语言规范中讲到,复合赋值(E1op=E2)等价于简单赋值(E1=(T)((E1) op (E2)))。通俗一点就是复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型,也就是进行了强制转换。就酱啦~


59 个回复

倒序浏览
学习了                     
回复 使用道具 举报
领教了哇
回复 使用道具 举报
so easy啊
回复 使用道具 举报
学习了。。。。
回复 使用道具 举报
顶一个 当复习了
回复 使用道具 举报
Y1011 中级黑马 2015-7-18 14:10:46
7#
当复习了
回复 使用道具 举报
{:3_46:}是这样啊
回复 使用道具 举报
哇!这个要保存下来!技术语言描述得好准确!!!
回复 使用道具 举报
恩,刚好再找这方面的例子
回复 使用道具 举报
6666666666666666666
回复 使用道具 举报
原来如此
回复 使用道具 举报
昨天刚讲完
回复 使用道具 举报
学习了   收藏一下
回复 使用道具 举报
复习了 ··               
回复 使用道具 举报
类型自动转换
回复 使用道具 举报
应该是自动转int
回复 使用道具 举报
明白了,谢谢了
回复 使用道具 举报
这个就是这样啊
回复 使用道具 举报
学习了,讲解的很详细
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马