在做运算的时候,byte/short/char会自动升级int类型,所以b1+b2做运算的时候已经是int类型的,而int类型的是无法自动转换成byte类型的,因此byte b3 = b1 + b2的运算会报错。需要添加强制转换byte b3 =(byte)( b1 + b2)即可。
置于byte a =(int)1;为什么能够赋值成功就不太清楚了,最好不要做这样的强制转换,类型不一样,从大到小做强制转换会损失精度。
我个人认为可能是因为所需要强制转换的数据恰好是在byte的取值范围,并且整数默认为int类型的,所以当数值取值范围在-128~127之间,用int对于byte数据做从大到小的强制转换就不会报错。但是对于long来说,就可能会报错损失精度了。
|