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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王健 中级黑马   /  2012-6-28 13:20  /  1759 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么System.in可以为InputStream实例化对象,System.out可以为OutputStream实例化对象,这个问题有点搞不明白,不明白System类和InputStream、OutputStream的关系!明白人给讲一下呗!

3 个回复

倒序浏览
本帖最后由 吴琼 于 2012-6-28 14:03 编辑

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

显示的不好重复一遍
回复 使用道具 举报
因为in和out是System类中的两个字段,分别对应的是“标准”输入流和“标准”输出流,这两个字段都是静态的,所以可以直接被System调用,而且返回值类型分别是InputStream和PrintStream,而PrintStream又是OutputStream的子类,由于多态的特性,当然可以分别给InputStream和OutputStream实例化对象
回复 使用道具 举报
首先要清楚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(参数)

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马