当前位置:编程学习 > JAVA >>

数据类型小问题---请各位帮忙指点?

请各位帮忙解决一个数据类型的小问题,如果问题太简单请大家不要喷我,我是新手。

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;
b = 128 + 0; //Type mismatch: cannot convert from int to byte
b = 128 - 1; //不报错
--------------------编程问答-------------------- byte b1=3,b2=4,
b=b1+b2;
byte类型的值和任何类型的值相加都会自动提升类型,本例中会自动提升为int型。
需要强制类型转换  b=(byte)(b1+b2);
给你举个例子:byte a=-2;
              byte b=-a;
这个也会报错,对byte型取负会自动提升为int,所以要强制转换。 --------------------编程问答-------------------- 多谢各位的帮忙,我明白了
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,