介绍
打印流主要解决的就是
OutputStream的一些问题,属于OutputStream功能的加强版。比如:我们只是通过程序向终端输出一些信息,如果使用
OutputStream就会产生一些问题,所以数据必须转变为字节数组再输出,输出int、double等类型就不是很方便。这时候我们使用打印流就方便很多。打印流主要是两个类:PrintStream和PrintWriter讲解:
一、PrintStream
- 类的继承关系:

可以看到PrintStream是继承FilterOutputStream的,而FilterOutputStream是继承OutputStream的,所以可以将PrintStream看作OutputStream的子类
- 类的构造函数如下:

可以看到PrintStream接收一个OutputStream类或者其子类作为参数。
- 其他方法:


截取部分方法展示一下,就是为了说明PrintStream可以将一些常见类型作为输入,不仅仅是字节数组。
小结
结合文档内容,
PrintStream将功能添加到另一个输出流,即可以方便地打印各种数据值的表示形式的功能,还提供了其他两个功能。与其他输出流不同,PrintStream永远不会抛出IOException。相反,在特殊情况下,只需设置一个内部标志即可通过checkError方法进行测试,可以创建PrintStream以便自动刷新。这意味着在写入字节数组,调用println方法之一或写入换行符或字节('\ n')之后,将自动调用flush方法。 由PrintStream打印的所有字符都使用平台的默认字符编码转换为字节。
代码演示:
1 | public static void main(String[] args) { |
最终结果:

二、PrintWriter
- 类的继承关系

可以看到PrintWriter是直接继承自Writer。
- 类的构造函数

可以看到PrintWriter接收一个OutputStream类(或者其子类)、Writer类(或者其子类)作为参数。
其他方法
跟上面的
PrintStream差不多,在这里不多介绍了。
代码演示:
1 | public static void main(String[] args) { |
结果:

总结
打印流使用起来比较简单,其实就是对OutputStream的一种封装,扩充了它的功能,其实在底层都是使用ValueOf将其转化成String然后再做处理。如果有机会后面会写一下这个类的设计模式,希望会填这个坑。