码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础知识强化01:short s = 1; s = s + 1;与short s = 1; s += 1;

时间:2015-08-27 12:36:53      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

1.short s = 1; s = s + 1;有没有问题?如果有怎么解决?

   short s = 1; s += 1;有没有问题?如果有怎么解决?

 

2.理解:

short s=1; 

s=s+1;
        自然是编译不通过的 提示损失精度

那么 :
short s=1;
s+=1;
为什么能编译通过那?
还有一个问题 :

隐式类型转换可以从小到大自动转,即byte->short->int->long如果反过来会丢失精度,必须进行显示类型转换
而s+=1的意思与s = s+1不同,s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换
所以将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是
s+=1 <=> s = (s的类型)(s+1)

 

Java基础知识强化01:short s = 1; s = s + 1;与short s = 1; s += 1;

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4762638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!