跳到主要内容

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

管

管理员

java

2018年04月13日 2,717 次阅读
本页目录

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;

Related

相关文章

同分类文章 →
2024年12月27日 java

Spring 事务中的几种隔离级别介绍

  Spring 为了方便用户设定事务的隔离级别,专门定义了一个枚举类:Isolation。这个枚举类和事务传播行为的枚举类很像。 public enum Isolation { DEFAULT(TransactionDefinition.ISOLATION_DEFAULT), READ_UNC

2021年07月07日 java

&&的优先级

&&的优先级高于|| 这里就有一种特殊情况:如果表达式中含有||,总是先算 || 左边的子表达式,这里是((a+1)>0)永远先于(((++a)<0) && (!((b--)<=0)))计算(并且由于优先级,先计算a+1,再与0比较,而不是先将1与0比较,再和a相加),如果 || 左边的

2021年03月29日 java

求圆心到点的直线与圆的相交点.

若O(x1,y1),A(x2,y2)满足OA>r。 则向量OA=(x2-x1,y2-y1),可设向量OB=(m,n),则有:m(y2-y1)-n(x2-x1)=0且(m-x1)²+(n-y1)²=r²。 解得B((x2-x1)r/√(x2-x1)²+(y2-y1)²,(y2-y1)r/√(x2-x1)&s

WeChat

扫码加我微信

微信二维码