黑马程序员技术交流社区

标题: 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