请各位帮忙解决一个数据类型的小问题,如果问题太简单请大家不要喷我,我是新手。public static void main(String[] args)
{
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
System.out.println("b="+b);
}在上面的的小程序中b=3+4;是正确的
而b=b1+b2;是错误的。 这个令我很不解,请指点在b=b1+b2;中b是byte类型的,b1,b2也是byte类型的,怎么能出现损失精度呢?
在b=3+4;中 b是byte类型的,3,4都是int类型的,也没看到有类型提升啊,怎么可以通过呢?
{
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
System.out.println("b="+b);
}在上面的的小程序中b=3+4;是正确的
而b=b1+b2;是错误的。 这个令我很不解,请指点在b=b1+b2;中b是byte类型的,b1,b2也是byte类型的,怎么能出现损失精度呢?
在b=3+4;中 b是byte类型的,3,4都是int类型的,也没看到有类型提升啊,怎么可以通过呢?
byte b;
b = 128 + 0; //Type mismatch: cannot convert from int to byte
b = 128 - 1; //不报错
b=b1+b2;
byte类型的值和任何类型的值相加都会自动提升类型,本例中会自动提升为int型。
需要强制类型转换 b=(byte)(b1+b2);
给你举个例子:byte a=-2;
byte b=-a;
这个也会报错,对byte型取负会自动提升为int,所以要强制转换。