博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
int类型和byte类型的强制类型转换
阅读量:6583 次
发布时间:2019-06-24

本文共 429 字,大约阅读时间需要 1 分钟。

今天在读这本书的第二章 流 时,看到书中有一个地方关于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的公众号 

转载地址:http://fnxno.baihongyu.com/

你可能感兴趣的文章
excel 添加换行符,去除换行符:
查看>>
小米5sp手机QQSD卡不可用
查看>>
httpWebRequest获取流和WebClient的文件抓取
查看>>
Linux下常用SVN命令
查看>>
[Leetcode]198. House Robber
查看>>
异步的事件轮询机制
查看>>
数学基础-概率论
查看>>
VALID_FOR in db standby
查看>>
转 linux之sed命令详解
查看>>
nginx相对于apache的区别
查看>>
看博客学学Android(十一)
查看>>
angular知识框架
查看>>
my life
查看>>
第二阶段12.14
查看>>
Spring事务管理
查看>>
关于C# partial的使用
查看>>
排序之插入排序
查看>>
存储过程--根据表名生成表的insert语句
查看>>
leetcode — unique-paths-ii
查看>>
redis——持久化篇
查看>>