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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gao5867565 中级黑马   /  2016-10-14 12:11  /  743 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[Java] 纯文本查看 复制代码
				FileOutputStream fos = new FileOutputStream("ioTest\\test2.txt");
				fos.write(-48);
				fos.write(257);
				fos.close();


上面的代码实际向文件写入了什么呢?
write方法虽然传的参数是一个int型,但是实际有效的只有一个字节,而int型长度为4个字节,所以java在实际写入时会将前面3个字节去掉,只存最后一个字节的数据,如上面 fos.write(-48);,(int)-48 用二进制补码表示为11111111 11111111 11111111 11010000(原码取反加一),舍弃掉前面24位,实际存的是后面8位,用十进制表示为208。
同理 fos.write(257);   257因为是正数,所以反码和本身一样,为 00000000 00000000 00000001 00000001 ,舍弃前面24位,所以最后写入文件的是 1 。  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马