两个byte类型数据相加为什么会报错

更新时间:2023-05-25 21:55

byte b=4;
byte b1=3;
byte b2=7;
b=b1+b2; //这样是计算不出b,是错误的
b=b1+7; //这样也是计算不出b
byte b=3+7; //怎么这样又可以计算?

         byte a=1;
         a=a*2;
   System.out.println(a);
在java中,类型为byte,short,char类型的变量在运算的时候会自动转为int类型,在式byte a=1;中变量a为byte类型,但在式a=a*2;中a*2为int类型,而a还是byte类型,所以会报精度损失,将a=a*2;这个式子改为a=(byte)a*2;即可!


Java代码编译字节码后,byte short char boolean等基础类型都转换成int进行计算
b=b1+b2; //b1+b2得到了一个int的值所以需要强制转换
b=(byte)b1+b2;