中易网

java问题,bytea=1,b=1;bytec=a+b;为什么错

答案:3  悬赏:70  
解决时间 2021-11-16 01:01
java问题,bytea=1,b=1;bytec=a+b;为什么错
最佳答案
我之前总结的有两种
1,错误提示是int转换为byte可能会丢失精度,可能是+号会提升两边的数据类型为int,大数据类型转小数据类型需要强转,并不能隐转,换句话说int以上所有数据类型支持这种写法,
例如double a=1;
double b=1;
double c=a+b;
解决这个问题可以这样bety c=(byte)(a+b);
2是byte 不支持这种写法,这个说法很牵强,我试过short也不能这样用
全部回答
byte的值的范围只有0和1(只是一位二进制数字),1+1=2,范围超出而出现溢出错误。
你所问的这个问题叫“自动类型提升” 在java中,对char, byte和short类型的字符串进行数学算法操作,比如+,-,>>位移操作,都会引发 自动类型提升,结果将是int类型,a+b的结果是int, 要将int的值赋给byte就必须进行类型强制转换。 以下这句,是从think in java 3rd中摘出来的,希望对你有帮助。 in char, byte, and short, you can see the effect of promotion with the arithmetic operators. each arithmetic operation on any of those types produces an int result, which must be explicitly cast back to the original type (a narrowing conversion that might lose information) to assign back to that type. 最后 关于类型的自动提升,java定义若干适用于表达式的类型提升规则: 第一,所有的byte型、short型和char型的值将被提升到int型; 第二,如果一个操作数是long型,计算结果就是long型; 第三,如果一个操作数是float型,计算结果就是float型; 第四,如果一个操作数是double型,计算结果就是double型。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1970年4月16日丁午时出身
有哪位知道倍洛加的效果
孕妇梦见青葡萄是什么意思?好不好呢?
有没有谁知道湖南省弼时镇的回门酒有什么风俗
璧流的意思是什么?璧流的释义是什么啊?
西安哪有卖阿胶的店
户外广告用喷绘和用涂料刷墙,哪种效果更好些
哪里有韩国米饼机器出售
月球上大大小小的坑是怎么回事?
为什么二月初二是理发吉日
我的电脑开不了机。开机后不能通过自检,风扇
王宽烧饼加盟如何?
有开合盖安全装置的高压锅是否一定安全?就是
10个月宝宝拉肚子,能用丁桂儿脐贴么?
蓝天茗茶地址在哪,我要去那里办事
推荐资讯
孕妇为何口臭?
绿豆赤豆薏米百合土茯苓可以一起煮吗
打印机并口不能正常使用
推荐几本有关钧瓷研究和史话的书
圆柱形水箱高位5米,容积为50立方米,水箱底
海沸山崩是什么意思啊?
黑电餐饮加盟,利润,回本
孕妇什么时间吃水果好
第二次世界大战爆发了在中国哪里才停止了
洗车店,都有什么项目,没个项目的工作流程是
坐便器盖板哪里卖?
南昌万科润园二手房贵吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?