黑马程序员技术交流社区

标题: 类型提升问题 [打印本页]

作者: liu100chao    时间: 2015-6-16 19:59
标题: 类型提升问题
short s = 4;
s = s + 5;请问这句为什么编译失败
s+=5;而这句编译就能通过呢??、
作者: 守门员    时间: 2015-6-16 20:14
s+=5 就相当于s=(short)s+5,+=是java的运算符,编译器会进行处理,返回的就是S的类型
s=s+5相当于 s=s+5返回类型是s与5中的最高类型int,想赋值给short类型,所以会报错
作者: a13783559191    时间: 2015-6-16 21:22
因为s是short类型的数据,5默认为int类型的数据,运算之后,结果自动转换成int类型,用short类型的数据接收,可能会损失精度,;而s+=5,它准确来说应该是赋值运算,不涉及数据类型自动提升
作者: 痞子刘忙    时间: 2015-6-16 22:12
java中基本类型转换问题。
作者: 1千克=1024克    时间: 2015-6-16 22:15
s+=5   <=> s = (short)(s+5)
作者: 曹操001    时间: 2015-6-16 22:17
楼上的回答都比较全面!有点简单,这个是基础的问题!
作者: 痞子刘忙    时间: 2015-6-16 22:22
java中基本类型转换问题。
作者: GoldMan    时间: 2015-6-16 22:27
楼上回答很好,小转大,自动转,大转小,强制转
作者: SHISY    时间: 2015-6-16 22:30
因为在short在计算时自动提升为int类型,int类型在赋值给short时会损失精度,s+=5其中包含了一个隐形的强制转换相当于b = (byte)(b+1);
作者: liu100chao    时间: 2015-6-17 22:39
明白了!谢谢
作者: liu100chao    时间: 2015-6-17 23:45
谢谢大家了!
作者: hi潘    时间: 2015-6-17 23:49
类型转换问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2