int类型和byte类型的强制类型转换

Posted CoderBuff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了int类型和byte类型的强制类型转换相关的知识,希望对你有一定的参考价值。

今天在读《Java网络编程》这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方。这个地方有点细节,不过就应该把这种细节把握住。

情况是这样的,讲到InputStream的抽象方法read时,说到read返回一个int型,但实际是一个byte型的数据。这点从API也能考证。如图:

那么问题来了,int占4个字节,byte占1个字节,我们循环读取的时候将int型数组强制类型转换成byte时,会发生什么情况呢?代码如下:

1个字节占8位,既然实际返回的是byte类型的数据,那么强制类型转换int型截取低8位,对数据也不会造成影响。问题就出现在,如果再从byte型转换成int型呢?代码如下:

此时,j输出为-106。

这是因为在int强制转换为byte型数据时,会产生一个-128~127的有符号字节,而不是read方法返回的0~255的无符号字节。这个时候要注意代码应修改为:

一个小问题,重在积累。

 

这是一个能给程序员加buff的公众号 

以上是关于int类型和byte类型的强制类型转换的主要内容,如果未能解决你的问题,请参考以下文章

有关强制类型转换和自动类型转换

int类型被强制转换成较低精度的byte类型

java类型转换详解(自动转换和强制转换)

java数据类型转换之int,byte

java中int如何转换byte

类型转换