本帖最后由 Fightin黑马 于 2014-10-12 19:33 编辑
第一个 byte b=1;b=b+1;//错误 原因是在Java中数字默认是int类型,b是byte类型,在运算时byte类型的b会自动提升为int类型,运算结果是int类型,把int类型的结果赋值给byte类型会出现损失精度
第二个byte b=1;b=++b;//正确 原因这里分为两个部分第一部 ++b 即b=(byte)(b+1);b的类型是和他本身的类型相同的,第二部把b赋值给b,两个都是byte类型可以赋值成功,第二部没有强转的操作,这个要和b+=1;区分开
关于int i=1; byte b=++i; 这里的两部分 第一部分i=(int)(i+1) i的类型是不变的,第二部中把int类型的i赋值给byte类型的b就会发生损失精度.
b+=i;就没有问题
|