为什么java中两个byte类型相加会是int类型

java中的类型提升问题

byte a = 1;
byte b= 2;
byte c = (byte) (a+b); 

这里为什么要将ab相加的结果在转为byte类型呢?即使所得的结果仍然没有超过byte类型所能表示的大小。原因是这样的:

使用较小类型运算没有性能优势,消除较小的类型使得字节码更简单,并且使得具有未来扩展空间的完整指令集仍然适合单个字节中的操作码。因此,较小的类型通常被视为Java设计中的二等公民,在各个步骤转换为int,因为这简化了一些事情。
较小的类型引入专用的算术逻辑单元不值得付出努力:它需要额外的晶体管,但它仍然只能在一个时钟周期内执行一次加法。 JVM设计时的主流架构是32位,适合32位int。

这是博主原文:
为什么两个short类型相加会自动提升为int?

相关的类似问题还有:
为什么 short、byte 会被提升为 int?及基本类型的真实大小

在C语言里好像也有这样的设定,就是把短整型-short int也在运算时也自动提升为int类型,因为效率高,运算比较快。
在此安利一个入门java的学习非常棒的网站,讲得非常细致how2j.cn

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天选打工仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值