这个简单,把详细的代码写出来你就懂了。
byte b = (int) 1 ; 这就是你的第一句话,这个是正确的,可以通过编译,当=右边只有一个数据时,赋值符号=会检测右边的数据是否在规定的范围内,如果在,就转换成你定义的类型。
(byte) b = (byte) b + (int) 1 ; 这句话=右边有两个数据,当相加时会自动提升,为(int) b + (int) 1 再赋值给左边就会发生类型转化异常。
(byte) b =(byte) b +=(int) 1 ; 最后这句话,你要清楚它的运行顺序,=符号是从右往左的运算,也就是先运行(byte) b +=(int) 1 ; 注意+=是一个符号,不是两个符号,你去查运算符优先级表的时候就可以知道=和+=在同一级里面。所以这也相当于一个赋值,只不过是先检测两边的和是否在byte范围内,如果在,就转化成byte类型并赋给左边。后面就是(byte) b = (byte) (b+1);了,所以b最终是byte类型 |