byte,short和char隐式的转换为int

文章讲述了Java中byte类型加法运算的原理,解释了为何bytec=a+b;会导致错误,而byted=1+3;则正确。指出在进行此类运算时,数据会被转换为int类型,可能导致溢出。解决方法是显式类型转换为byte。
摘要由CSDN通过智能技术生成

1、问题演示

byte a=1;

byte b=3;

byte c = a+b;

byte d = 1+3;

为什么byte  c = a + b;这个不对?byte d=1+3;这个却没有错误。

2、解决办法

+操作会将变量转成int

1 + 3 编译器会自动转成 4

做加法运算的时候,数据类型是首先转变成int,这样就对了:byte c = (byte)(a+b);

Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int 类型,然后对int类型值进行运算,最后得到int类型的结果。因此,如果把两个byte类型值相加,最后会得到一个int类型的结果。如果需要得到byte类型结果,必须将int类型的结果显示转换为byte类型。

计算机中数值进行运算的时候可能会发生溢出错误。例如,byte型的变量,共占8个2进制位,其值的范围是:-128 ~ 127,如果两个值为127的byte型变量相乘,结果会怎么样呢?所以,像byte这样值域很小的变量类型,要限制保存结果用的变量类型。

byte a=1;

byte b=3;

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

在IDEA软件开发工具中也不再报错:

1 + 3的结果在 -128 ~ 127 之间,所以没有溢出,也就没有发生错误,如果改成 byte d = 127 + 127;就会发生错误了,空间不能容下这么大的数。其实这个与相关的编译器有关的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值