菜鸟问个关于自动类型转换的问题
刚开始学习java,学到自动类型转换.
class OperatDemo01
{
public static void main(String[] args)
{
byte b1 = 3,b2 = 4,b;
b = b1+b2;
System.out.println(b);
}
}
编译后出现 错误: 可能损失精度
这个代码报错,不明白为什么会这样.
希望有人能详细的说下,谢谢
----------------解决方案--------------------------------------------------------
不是损失精度把,你b2= 4,b;是什么啊 一个变量值不是这样的把
----------------解决方案--------------------------------------------------------
回复 楼主 可乐酷酷
编译器在编译时(byte类型取值是有限的)他在判断右边的数值的时候发现是int类型(是“常量”), 但他会判断是不是在byte字节范围之内,如果在的话,会给右边的int类型做默认的强转,他把最后的一个字节(byte八个二进制)赋值到了b这个变量当中 *//* b1和b2是“变量”意味着这两值不确定、可能随时变化,编译器无法检查,也无法确定是否在byte字节范围之内, 他检查不了就会报错(可能丢失精度),如果是“常量”编译器就能够判断了