黑马程序员技术交流社区
标题: 为什么Outputstream中的write方法可以使用int类型 [打印本页]
作者: --☆伟☆-- 时间: 2012-5-21 11:50
标题: 为什么Outputstream中的write方法可以使用int类型
Outputstream中的write不是只能接受byte类型数据么,string类型想输入的话必须使用getbyte方法,但int类型为何可以直接使用,如图所示,难道不会出现什么损失精度之类错误么
-
未命名.jpg
(50.36 KB, 下载次数: 57)
作者: 胥江 时间: 2012-5-21 12:04
write(int b)方法是将整形的b对应的ASC码写进去,方法就是这样定义的,就可以这样用啊
作者: 魏涞 时间: 2012-5-21 12:24
write
public abstract void write(int b)
throws IOException将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。
作者: 杨梦宇 时间: 2012-5-21 14:33
实质上讲,write 方法因为在写入的时候,写入的并不是一个真正的int数据,而是写入的一个ascii的编码 你看下面的程序:- import java.io.*;
- class FileWriteInt{
- public static void main(String[] args) throws IOException{
- File f=new File("test.txt");
- FileOutputStream fos=new FileOutputStream(f);
- fos.write(66);
- fos.close();
- FileInputStream fis=new FileInputStream(f);
- byte[] b=new byte[1024];
- int len=fis.read(b);
- System.out.println(new String(b,0,len));
- fis.close();
- }
- }
复制代码输出结果是:B 因为在写入的时候,写入的并不是一个真正的int数据,而是写入的一个ascii的编码,所以在读取的时候按照ascii码来读取
作者: Fc10232 时间: 2012-5-21 14:53
实际上往里面传递的还是byte 向上转型为int, 所以int中后面的三个八位就没有意义,常规忽略了,但实际还是存在;
{:soso__8961432591078930798_3:}说实话,我不确定我说的对不对,希望能帮到你
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |