比如:
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,因而不会报错。
相关文章
- 在JAVA中自定义连接数据库的工具类
- Java泛型中类型限定<T extends 数据类型>和 通配符<? extentds 数据类型>的区别
- TS如何解决属性在另一个类型中不存在的问题?
- java object 转换date类型_java中,Date数据类型和JSONObject数据类型之间的转换
- java float强制转换int类型_在Java中如何将float转换为long或int数据类型?
- 【解决java中Post请求,在拦截器取requestBody数据后,controller层接收的数据为空问题】
- MySQL中BIGINT与Java数据类型对应问题
- java中的Date类型插入mysql数据库中的TimeStamp类型时间数据差了13或8小时
- (备忘)Java数据类型中String、Integer、int相互间的转换
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。