黑马程序员技术交流社区

标题: 关于JAVA IO流的一点小疑问 [打印本页]

作者: 王健    时间: 2012-6-28 13:20
标题: 关于JAVA IO流的一点小疑问
为什么System.in可以为InputStream实例化对象,System.out可以为OutputStream实例化对象,这个问题有点搞不明白,不明白System类和InputStream、OutputStream的关系!明白人给讲一下呗!
作者: 吴琼    时间: 2012-6-28 14:00
本帖最后由 吴琼 于 2012-6-28 14:03 编辑

建议你查下API去看下System类里面的字段.里面有介绍的.
System有三个字段  err返回的类型是printStream 标准的错误流,
                           in返回的类型就是InputStream,标准的输入流
                          out返回的类型就是PrintStream.标准的输出流.    返回类型都是静态的.所以就可以写成
      
               InputStream is = System.in;
                      PrintStream os = System.out;

显示的不好重复一遍
作者: 吴扬    时间: 2012-6-28 14:16
因为in和out是System类中的两个字段,分别对应的是“标准”输入流和“标准”输出流,这两个字段都是静态的,所以可以直接被System调用,而且返回值类型分别是InputStream和PrintStream,而PrintStream又是OutputStream的子类,由于多态的特性,当然可以分别给InputStream和OutputStream实例化对象
作者: 史卜坤    时间: 2012-6-28 14:44
首先要清楚InputStream、OutputStream的意思:1,字节输入流InputStream类,InputStream类是所有面向字节的输入流的父类,为java.io包中的抽象类。类的定义如下:public abstream class InputStreamextends Object还有,InputStream类中声明了用于字节输入流的多个方法,包括读取数据、标记位置、获取数据量、关闭数据流等。常用方法如下:
  Read():从流中读入数据。
  Skip():跳过流中读入数据。
  Available():返回流中可用字节数。
  Mark():在流中标记一个位置。
  Reset():返回标记过的位置。
   markSupport():是否支持标记和复位操作。
  Close():关闭流。
然后是OutputStream。字节输出流OutputStream类,Outputstream类为所有面向字节的输出流的父类,为java.io包中的抽象类。类的定义如下:public abstract class OutputStreamextends Object,OutputStream类中声明了用于字节输出流的多个方法,包括写出数据、刷新缓冲区、关闭数据流等。常用方法如下:
     Writer(int b): 将一个整数输出到流中。
     Werter(byte b[]); 将数组中的数据输出到流中。
     Werter(byteb[],int off,int len); 将数组b中从off指定的位置开始len长度的数据输出到流中。
     Flush(): 将缓冲区中得数据强制送出。
    Close(): 关闭流。
System标准输入/输出流,System.in作为字节输入流类InputStream的对象,实现标准的输入,使用其read()方法从键盘接收数据。
public int read() throwsIOException  
public int read(byte[] i) throwsIOException
然后标准的输出System.out
System.out是打印流类PrintStream的对象,用来实现标准输出。print()和println()方法,支持任意的基本类型作为参数。
public void print(参数)
public void println(参数)




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