黑马程序员技术交流社区

标题: 关于OutputStream的write(int b)方法参数的问题 [打印本页]

作者: 贾双涛    时间: 2011-9-26 22:56
标题: 关于OutputStream的write(int b)方法参数的问题
OutputStream类的void write(int b) 方法将int最低字节的数据写入输出流中,int型前面的三个字节的数据会被丢弃,这不会发生数据丢失吗?
作者: 匿名    时间: 2011-9-26 23:08
b是字节(API中有说明),最大范围用八个低位就可以满足了
其实write(byte b)就可以了
只不过
Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果
所以就写成write(int b)的形式
个人理解+猜测
作者: 梁锡伟    时间: 2011-9-27 02:17
你写完后读取一下不就知道了吗
作者: 匿名    时间: 2011-9-27 23:04
[quote] 原帖由 [i]余洋[/i] 于 2011-09-27 00:01 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=11150&ptid=1770][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]简单的说这是因为涉及到判断条件-1的,在读取字节数据时候,如果连续出现8个二进制的1111 1111那么在十进制中就是-1
为了不出现这种情况,所以就用int接收,类型就提升了,32个1表示了int类型的-1,我们只要保留后面8位所以&上255就变成了1111 1111 存这样就不会丢失数据。。不知道你是不是问这个问题。 [/quote]
写数据的时候不需要判断-1吧?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2