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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a504079589 中级黑马   /  2012-3-13 01:34  /  1758 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字节和字符流中的read()方法为什么返回的都是int型?

3 个回复

倒序浏览
不论是对于字节流还是字符流...read方法每read一次就读出一个字节或字符的内容.
对于西文.一个字节就OK了.
对于其他的如中文,就是一个字符.
当然.不论是何种形式.都可以用int类型的整数来表示.
实际上char类型的数在内存中都是以数字的形式存在的.这点相信你不会不知道吧.

char是16位Unicode字符或者说是16位无符号整数,范围从0到65535。即便如此,可以强制转换非法的数据,如:char c1 = (char) 10000;  char c2 = (char) -200;。可以从二进制存储的角度理解这点。
回复 使用道具 举报
老毕说 如果出现2个8读出来的值是-1  循环结束  多读2个8位  就是int值 就避免这个问题了,具体的我也忘了 我也得回去看看
回复 使用道具 举报
本帖最后由 王国华 于 2012-3-13 09:02 编辑

read方法是做类型提升 一个byte是八位
1111-1111 提升到int型 还是-1,是-1的原因是因为在8个1之前补24个1
只要在前面补0就可以保证原字节数据不变 ,又可以避免-1的出现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马