2017-05-18知识梳理

已有 63 次阅读2017-5-19 16:42 |个人分类:知识点总结|系统分类:学习纪录| 知识

知识点:java中short s=s+1和s+=1的区别



① short s=s+1

 

会出现编译错误。s+1的时候,结果会被“升格”为int类型。把int赋给short当然编译错误。

 

 

② s+=1

 

对于“+=”操作,系统会自动执行类型转换操作,等价于s=(short)s+1。



short s=1;s=s+1; short s=1;s+=1; 有区别么?? 如果有的话区别是什么? 没有的话值是多少?
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里面默认数据类型转换int类型。


路过

鸡蛋

鲜花

握手

雷人

全部作者的其他最新日志

评论 (0 个评论)

facelist

doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

Copyright;  ©2015-2017  知了堂学习社区  Powered by  知了堂Edu!     ( 蜀ICP备16011312号-1 )