java问题,bytea=1,b=1;bytec=a+b;为什么错
答案:3 悬赏:70
解决时间 2021-11-16 01:01
- 提问者网友:柠檬香
- 2021-11-15 01:20
java问题,bytea=1,b=1;bytec=a+b;为什么错
最佳答案
- 二级知识专家网友:桑稚给你看
- 2021-11-15 02:39
我之前总结的有两种
1,错误提示是int转换为byte可能会丢失精度,可能是+号会提升两边的数据类型为int,大数据类型转小数据类型需要强转,并不能隐转,换句话说int以上所有数据类型支持这种写法,
例如double a=1;
double b=1;
double c=a+b;
解决这个问题可以这样bety c=(byte)(a+b);
2是byte 不支持这种写法,这个说法很牵强,我试过short也不能这样用
1,错误提示是int转换为byte可能会丢失精度,可能是+号会提升两边的数据类型为int,大数据类型转小数据类型需要强转,并不能隐转,换句话说int以上所有数据类型支持这种写法,
例如double a=1;
double b=1;
double c=a+b;
解决这个问题可以这样bety c=(byte)(a+b);
2是byte 不支持这种写法,这个说法很牵强,我试过short也不能这样用
全部回答
- 1楼网友:情战凌云蔡小葵
- 2021-11-15 03:51
byte的值的范围只有0和1(只是一位二进制数字),1+1=2,范围超出而出现溢出错误。
- 2楼网友:浪女动了心
- 2021-11-15 03:18
你所问的这个问题叫“自动类型提升”
在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型。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯