黑马程序员技术交流社区
标题:
read()方法
[打印本页]
作者:
a504079589
时间:
2012-3-13 01:34
标题:
read()方法
字节和字符流中的read()方法为什么返回的都是int型?
作者:
赵英坤
时间:
2012-3-13 08:46
不论是对于字节流还是字符流...read方法每read一次就读出一个字节或字符的内容.
对于西文.一个字节就OK了.
对于其他的如中文,就是一个字符.
当然.不论是何种形式.都可以用int类型的整数来表示.
实际上char类型的数在内存中都是以数字的形式存在的.这点相信你不会不知道吧.
char是16位Unicode字符或者说是16位无符号整数,范围从0到65535。即便如此,可以强制转换非法的数据,如:char c1 = (char) 10000; char c2 = (char) -200;。可以从二进制存储的角度理解这点。
作者:
djx900
时间:
2012-3-13 08:50
老毕说 如果出现2个8读出来的值是-1 循环结束 多读2个8位 就是int值 就避免这个问题了,具体的我也忘了 我也得回去看看
作者:
王国华
时间:
2012-3-13 08:51
本帖最后由 王国华 于 2012-3-13 09:02 编辑
read方法是做类型提升 一个byte是八位
1111-1111 提升到int型 还是-1,是-1的原因是因为在8个1之前补24个1
只要在前面补0就可以保证原字节数据不变 ,又可以避免-1的出现。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2