A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 月光海 高级黑马   /  2014-4-13 22:32  /  1287 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字节读取流的read()方法读的不是一个字节吗,char不是占2个字节吗?为什么返回 的数字可以转为char类型????

5 个回复

倒序浏览
read()方法的返回的是读入缓冲区的总字节数,类型为int型,int 型可以转为char类型啊
回复 使用道具 举报
钟成军 发表于 2014-4-13 22:39
read()方法的返回的是读入缓冲区的总字节数,类型为int型,int 型可以转为char类型啊 ...

read()返回的是读到的字节把,你这扯的,read(byte[]b)返回的是读到的字节数,我把字节数转成char干嘛,刚刚我又试了一下汉字,果然一个字节以外的编码的符号显示不出来
回复 使用道具 举报
本帖最后由 不似侽紸角. 于 2014-4-13 22:50 编辑


简单来说做了类型转换!
回复 使用道具 举报
月光海 发表于 2014-4-13 22:45
read()返回的是读到的字节把,你这扯的,read(byte[]b)返回的是读到的字节数,我把字节数转成char干嘛,刚 ...

字节流的读一个字节的read方法为什么返回值类型不是byte,而是int。
因为有可能会读到连续8个二进制1的情况,8个二进制1对应的十进制是-1.
那么就会数据还没有读完,就结束的情况。因为我们判断读取结束是通过结尾标记-1来确定的。
所以,为了避免这种情况将读到的字节进行int类型的提升。
并在保留原字节数据的情况前面了补了24个0,变成了int类型的数值。


而在写入数据时,只写该int类型数据的最低8位。

毕老师总结的!


这样

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报 1 0
月光海 发表于 2014-4-13 22:45
read()返回的是读到的字节把,你这扯的,read(byte[]b)返回的是读到的字节数,我把字节数转成char干嘛,刚 ...

好吧,那我看错了,嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马