Java中byte类型数据在运算之前要转换成int类型数据
2018-01-20 21:45
381 查看
byte b1=3,b2=4,b;
b=b1+b2; //错误 运算时会自动转换为int类型 而int类型的值不能赋值给byte 需要强制类型转换
b=3+4;//正确 常量具有常量类型优化机制 可以直接识别为byte
运行时报 错误: 可能损失精度
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/c1ef3162621f1f9e2ee7b73b3844cb2d)
相关问题:
在Java中byte类型数据在运算的问题
在Java中,byte类型数据在运算之前要转换成int类型数据。
比如:
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类型。
c=a+b时,符合第四个项,a+b的结果将转为int类型,把int赋值给byte是不可以的
c=a+1时,同样符合第四项
至于c=64+1,64+1是个在编译时就可以确定的常量,而且范围没有超出byte的取值范围,这个关系式就相当于c=65,因而不会报错
原文来自:博客园-h2内存数据库
原文网址:https://www.cnblogs.com/h2-database/archive/2011/10/12/2572575.html
b=b1+b2; //错误 运算时会自动转换为int类型 而int类型的值不能赋值给byte 需要强制类型转换
b=3+4;//正确 常量具有常量类型优化机制 可以直接识别为byte
public class Variable_1{ public static void main(String[] args){ byte b1=3,b2=4,b; b=b1+b2; System.out.println(b); } }
运行时报 错误: 可能损失精度
相关问题:
在Java中byte类型数据在运算的问题
在Java中,byte类型数据在运算之前要转换成int类型数据。
比如:
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类型。
c=a+b时,符合第四个项,a+b的结果将转为int类型,把int赋值给byte是不可以的
c=a+1时,同样符合第四项
至于c=64+1,64+1是个在编译时就可以确定的常量,而且范围没有超出byte的取值范围,这个关系式就相当于c=65,因而不会报错
原文来自:博客园-h2内存数据库
原文网址:https://www.cnblogs.com/h2-database/archive/2011/10/12/2572575.html
相关文章推荐
- java Byte和各数据类型(short,int,long,float,double)之间的转换
- java数据类型转换之int,byte
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- java Byte和各数据类型(short,int,long,float,double)之间的转换
- java中byte转换int时为何与0xff进行与运算
- Java中byte转换int时与0xff进行与运算的原因
- java中byte转换int时为何与0xff进行与运算
- [转]java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java中byte数组与int类型的转换(两种方式)
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- JAVA中有关byte,int,long这些基本数据类型的存储方式以及负数在JAVA中的表示方式
- java中byte转换int时为何与0xff进行与运算
- java中byte转换int时为何与0xff进行与运算
- Java中byte转换int时与0xff进行与运算的原因
- 两种将int类型的数据转换成byte数组,以及反向转换的代码