java高手,大侠,请进,麻烦了

wangqiulei1 2010-03-11 08:10:29
short s=1;
s=s+1;与s+=1;有什么区别,s+=1内部是怎样运算的,还有s+=1为什么不需要转型,各位高手麻烦了!
...全文
114 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwjieNo1 2010-03-11
  • 打赏
  • 举报
回复
面试题中很多啊
joaryyu 2010-03-11
  • 打赏
  • 举报
回复
4楼引用的解释好,得认真看才能看懂英语,看来得好好学英文。
chentao19860501 2010-03-11
  • 打赏
  • 举报
回复
学习了
pengsaiwei 2010-03-11
  • 打赏
  • 举报
回复
呵呵,学习了,这个我也不知道,没碰到过额
ZangXT 2010-03-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangqiulei1 的回复:]
我也怀疑过是编译器转化,可是编译器在什么情况下会自动转换的,这种转换是不是有什么条件,如果有条件,条件是什么?麻烦了了
[/Quote]
看《java语言规范》,这是规定
+= 这样的表达式,需要的情况下自动进行强制转换。
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.26.2
15.26.2 Compound Assignment Operators
A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T)((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.
For example, the following code is correct:



short x = 3;
x += 4.6;

and results in x having the value 7 because it is equivalent to:


short x = 3;
x = (short)(x + 4.6);

sotom 2010-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zangxt 的回复:]
s+=1;相当于s = (short)(s+1);编译器会添加强制转换操作。
s=s+1; s+1得到的是int类型的结果,int赋给short变量s,不合法,编译错误。
[/Quote]

丫的,这个我不知道诶,貌似解释不错,真的假的?看楼下
wangqiulei1 2010-03-11
  • 打赏
  • 举报
回复
我也怀疑过是编译器转化,可是编译器在什么情况下会自动转换的,这种转换是不是有什么条件,如果有条件,条件是什么?麻烦了了
ZangXT 2010-03-11
  • 打赏
  • 举报
回复
s+=1;相当于s = (short)(s+1);编译器会添加强制转换操作。
s=s+1; s+1得到的是int类型的结果,int赋给short变量s,不合法,编译错误。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧