黑马程序员技术交流社区

标题: 输出流 的 write(int i) 方法 [打印本页]

作者: gao5867565    时间: 2016-10-14 12:11
标题: 输出流 的 write(int i) 方法
[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 。  




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