黑马程序员技术交流社区
标题:
类型提升问题
[打印本页]
作者:
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