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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾双涛 黑马帝   /  2011-9-26 22:56  /  2602 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OutputStream类的void write(int b) 方法将int最低字节的数据写入输出流中,int型前面的三个字节的数据会被丢弃,这不会发生数据丢失吗?

4 个回复

正序浏览
黑马网友  发表于 2011-9-27 23:04:42
板凳
[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吧?
回复 使用道具 举报
你写完后读取一下不就知道了吗
回复 使用道具 举报
黑马网友  发表于 2011-9-26 23:08:38
沙发
b是字节(API中有说明),最大范围用八个低位就可以满足了
其实write(byte b)就可以了
只不过
Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果
所以就写成write(int b)的形式
个人理解+猜测
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马