本帖最后由 zhuohong_xiao 于 2014-8-14 15:53 编辑
对于byte b = 2的理解
等号右边是2。2是常量,固定不变的。2会问系统是否在在b的范围内,在就将2赋值给b。
这个是自动转换动作。
对于
byte b;
b = b +2;
理解b是一个变化的值。b+2也是一个变化的值,是个变量,不确定。就容易丢失精度。
2是一个int类型的值。b+2效果是b自动提升为int类型的值再与2相加。
得到b+2的结果也是int类型的值。
将int类型的结果赋值给byte类型的b就会造成丢失精度。
所以就要对b=b+2;
修改为
b= (byte)(b+2);
在这里使用了强制类型转换。将b+2的结果强制转换为byte类型在赋值给b。
不知道我这么理解有没有错误。高人帮忙看看。谢谢。有误请指出。不胜感激!
|
|