byte b;
b=4;
b=b*5;//错误
b*=5;//正确
b=(byte)(b*5);//正确
System.out.println(b);请问为啥b*=5正确呢,和b=b*5不是一个意思吗?

解决方案 »

  1.   

    up, 我也有类似的问题:http://community.csdn.net/Expert/TopicView1.asp?id=5141997也请大家看看
      

  2.   

    b=b*5;//错误
    这个错误是因为,在表达式中的常量5的类型是int的,所以b*5是进行int乘法,结果也是一个int的数,所以必须强制类型转换才行;b*=5;//正确
    这个正确是因为在这种缩写的表达式中,自动会把等式右边的常量5转换成等式左边的类型一致,所以是做byte乘法,所以是正确的;其它类似的b+=5;也是正确的