我想问你是否知道以下代码会给出强制转换异常。
byte b = 50;
b = b * 2;
Java在求解方程之前将字节转换为int。然后b的定义将给出强制转换异常。
答案 0 :(得分:4)
为了使代码抛出ClassCastException
,代码需要编译。另一方面,此代码不会按原样编译,因为第二行将触发错误:
错误:不兼容的类型:从int到byte的可能有损转换
这是因为乘法产生int
。
如果使用复合赋值替换赋值,则错误将消失:
b *= 2; // This compiles and runs correctly