java问题byte a=1,b=1;byte c=a+b;为什么错

为什么会自动转化为int... 为什么会自动转化为int 展开
 我来答
rrroger
推荐于2017-09-04 · TA获得超过1715个赞
知道小有建树答主
回答量:824
采纳率:0%
帮助的人:0
展开全部
你所问的这个问题叫“自动类型提升”

在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型。
hu437
2008-08-02 · TA获得超过3472个赞
知道大有可为答主
回答量:2690
采纳率:0%
帮助的人:2377万
展开全部
a+b产生的结果会自动转为int类型

所以需要进行一次强制类型转换

byte c=(byte)(a+b);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cau_thinker
2008-08-02 · TA获得超过102个赞
知道答主
回答量:77
采纳率:0%
帮助的人:0
展开全部
别人说的很明白了,我就不说了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式