黑马程序员技术交流社区
标题:
关于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