首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

基本的不能再基本的有关问题

2012-03-07 
基本的不能再基本的问题byte a 2a a +3//为什么这个是报错的a+3//而这个是对的?[解决办法]aa+3 报错

基本的不能再基本的问题
byte a = 2

a = a +3 //为什么这个是报错的
a+=3 //而这个是对的?

[解决办法]
a=a+3 报错 是因为加法运算的时候会把a和3的类型转换为同一高优先级运算的数据类型。a+3的结果就是一个int类型的数据,而a是个byte类型。所以会报错。

a+=3是正确的,因为虚拟机运算的规定。a+=3和a的类型一致。
[解决办法]
1. a = a +3 // 整数3默认是int型,这条语句显然会丢失精度。
除非你进行转化,a = a +(byte)3
2. a+=3 //之所以不会报错,是因为这是复合赋值,很多人多误认为a+=3;就是a = a+3;
其实不然,这条语句在执行时有略微的不同,就是:在执行 a+3后,还会将所得结果转换,把它转换成a的类型,
如果所得结果的精度比a的要高,就向这条语句,那么就会被窄化,如果超出a类型的表示范围,那么得到的就不是你想要的值了。

热点排行