不理解请高手指点

a13323778446 2008-07-09 09:06:17
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)
...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongyali2005 2008-07-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 loujianchengdd 的回复:]
由于1默认是int类型的数据,所以在计算s1+1的时候,java会自动把计算结果转为精度比较大的类型,这里计算结果也就是int
就相当于 s1 = 2;这个时候2是int类型,所以会有错误,因为会丢失精度,要把2强制转化为int才行。

而 s1 +=1 中"+="这个运算符解析的时候是有一个固定模型的,就是会按照这样的公式解析
(n的类型)n += (n1的类型)n1 => (n的类型)n = (n的类型)(n+n1) 由于解析后自动进行了强制类型转换,所以是不会有…
[/Quote]

1,2...3,系统默认是INT型的.

3.26默认是DOUBLE型.知道这个就不能理解了.
loujianchengdd 2008-07-09
  • 打赏
  • 举报
回复
由于1默认是int类型的数据,所以在计算s1+1的时候,java会自动把计算结果转为精度比较大的类型,这里计算结果也就是int
就相当于 s1 = 2;这个时候2是int类型,所以会有错误,因为会丢失精度,要把2强制转化为int才行。

而 s1 +=1 中"+="这个运算符解析的时候是有一个固定模型的,就是会按照这样的公式解析
(n的类型)n += (n1的类型)n1 => (n的类型)n = (n的类型)(n+n1) 由于解析后自动进行了强制类型转换,所以是不会有问题的。
loujianchengdd 2008-07-09
  • 打赏
  • 举报
回复
hehe
zhj92lxs 2008-07-09
  • 打赏
  • 举报
回复
有沙发?
cursor_wang 2008-07-09
  • 打赏
  • 举报
回复
怎么发了这么多的同一个主题?前面已经回答.

62,615

社区成员

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

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