byte类型,一文就够了

byte类型解析

因为byte类型在开发中使用得比较少,很多人都对其一知半解,我一开始也是,但是研究一下以后,对许多问题都能豁然开朗了。

运算报错问题

byte类型参数运算,无论是否超范围,都会报错:

image-20210313132658385

byte类型常数运算,超范围,会报错,不超范围,不会报错:

image-20210313132812851

这是因为:

两个变量相加,先对类型进行提升,然后运算,再将运算结果赋值。

两个常量相加,先计算常量数值,然后判断是否满足类型范围,再赋值。



范围超出问题

byte类型,范围是-128~127,但是如果相加结果超出范围,那显示的是什么结果?

image-20210313132308706

这里,b1+b2最后的结果应该是130,超出了byte的范围。由上面一部分,我们知道,byte类型在进行运算的时候,是升范围进行运算的,计算结果是 4字节的int类型130

130用2进制表示,为00000000 00000000 00000000 10000010,强制类型转化,会取最后8位,即10000010,因为符号位是负数,将其由补码转换为原码,需要对其取反再加一:(补码)10000010->(反码)11111101->(源码)11111110,其结果,就是-126

我们再来举几个例子,巩固一下:

image-20210313134114629

首先是128

(int)00000000 00000000 00000000 10000000->(强转)10000000

符号位为1,其余位为0,这种情况,结果是-128

然后是129

(int)00000000 00000000 00000000 10000001->(强转)10000001->(取反)11111110->(加一)11111111

猜你喜欢

转载自blog.csdn.net/weixin_44062380/article/details/114744872