数据类型小问题---请各位帮忙指点?
请各位帮忙解决一个数据类型的小问题,如果问题太简单请大家不要喷我,我是新手。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、short、char类型数据运算后结果自动转为int类型。所以你想将b1、b2两个的运算结果赋给一个byte类型的b。就得强制转换 --------------------编程问答-------------------- “b=3+4;”像这样,如果直接使用数字来进行运算的话,如果最后运算的结果不超出b所声明的数据类型的表示范围的话,不会报错。
byte b;--------------------编程问答-------------------- byte b1=3,b2=4,
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,所以要强制转换。 --------------------编程问答-------------------- 多谢各位的帮忙,我明白了
补充:Java , Java SE