Java中Byte类型数据在运算中的问题

时间:2021-01-04 03:13:35

比如:

byte a=1;

byte b=2;

byte c;

c=a+b; //这样是计算不出c,是错误的

c=a+1; //这样也是不能计算c的

c=64+1; //为什么这样就能计算c,在Java中这是什么原理啊?



运算符对基本类型的影响



当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则:



只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;

否则,只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;

否则,只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;

否则,两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。



原文来自:雨枫技术教程网 http://www.fengfly.com

原文网址:http://www.fengfly.com/plus/view-170775-1.html



c=a+b时,符合第四个项,a+b的结果将转为int类型,把int赋值给byte是不可以的

c=a+1时,同样符合第四项

至于c=64+1,64+1是个在编译时就可以确定的常量,而且范围没有超出byte的取值范围,这个关系式就相当于c=65,因而不会报错。