关于short的问题

zasui3 2009-09-15 10:45:00
short s1 = 1;
s1 = s1 + 1;

s1 += 1;


这两者为什么产生的结果不一样呢?希望能解释一下
...全文
150 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zrcvic 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lliiqiang 的回复:]
s+=1会自定类型转换
相当于s=(short)(s+1)
[/Quote]

另外,两个 short (byte, char, int) 无论进行什么运算结果都是 int,其中需要特别注意的是,short << int, short >> int, short >>> int 结果也都是 int。
zasui3 2009-09-17
  • 打赏
  • 举报
回复
谢谢了!
cangyue87 2009-09-16
  • 打赏
  • 举报
回复
jvm最小运算单位是int,int以下不能直接用运算表达式,结果要转型,自加自减除外喵。
bigbug9002 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 uyerp 的回复:]
short s = 1;
s = s + (short)1;
谁能详细解释下这个?
[/Quote]

short ,char,byte类型的数值在做四则运算时,都要转成int类型来运算的。结果也是int类型的。

+=,++之类的运算是复合赋值运算,可以看成同类型的赋值,所以不会出错。
搞什么哦 2009-09-16
  • 打赏
  • 举报
回复
short s = 1;
s = s + (short)1;
谁能详细解释下这个?
枫叶rain 2009-09-16
  • 打赏
  • 举报
回复
up
jayqean 2009-09-16
  • 打赏
  • 举报
回复
细节问题
chenchengamao 2009-09-16
  • 打赏
  • 举报
回复
short s1 = 1;


s1 = s1 + 1; s1+1的结果是int类型的,而s1是short类型的,所以在编译时无法通过。
s1 += 1; 对于“+=”操作符,它会自动将所执行的计算结果转换成其操作符左边变量的类型。
lliiqiang 2009-09-16
  • 打赏
  • 举报
回复
s+=1会自定类型转换
相当于s=(short)(s+1)
kingkkg3 2009-09-15
  • 打赏
  • 举报
回复
顶的 不错
leonis01 2009-09-15
  • 打赏
  • 举报
回复
short s = 1;
s = (short)(s + 1)
可以的不会出错的啊
zhyou_1989 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zasui3 的回复:]
但是如果这样写也会出错的
short s = 1;
s = s + (short)1;
或者是:
s = (short)(s + 1)
也会出错
[/Quote]

yeah。。
zasui3 2009-09-15
  • 打赏
  • 举报
回复
但是如果这样写也会出错的
short s = 1;
s = s + (short)1;
或者是:
s = (short)(s + 1)
也会出错
healer_kx 2009-09-15
  • 打赏
  • 举报
回复
大多时候,我觉得不会用short这么一个东西,其实它速度恐怕没有int快。
jasonchain 2009-09-15
  • 打赏
  • 举报
回复
因为1是int型的,所以s1 + 1结果是int型的值,而s1 += 1这样写不会晋升,为了方便。
dajiadebeibei9 2009-09-15
  • 打赏
  • 举报
回复
因为int不能自动转换成short
老紫竹 2009-09-15
  • 打赏
  • 举报
回复
s1 = s1 + 1;

因为系统按照int进行计算了,然后把int给short就出错了。
healer_kx 2009-09-15
  • 打赏
  • 举报
回复
不同是因为Java很傻。

62,614

社区成员

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

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