java中的PrintStream的理解

PrintStream是打印流的意思,他是FilterOutputStream的子类,由此可见我们知道printStream只是一个类似缓冲流一样给底层介质流提供功能的,这功能就是数字和对象转化为文本。在这里我们要注意:我们都知道System.out和System.err都是PrintStream对象(System.in不是),我们因而会误以为PrintStream和我们运行程序的窗口(console)输出有关,其实他们是没有关系的,因为PrintStream是一个过滤流(FilterOutputStream的子类),所以我们创建PrintStream对象时可以传不同的outputStream对象给它,让它输出到其它地方而不是console,例如:传一个FileOutputStream的对象,那么这个PrintStream对象就会打印输出到文件上面

PrintStream是不会抛出IOException的,当有异常时对象会设置一个内部的flag,使用是我们只能通过checkError()方法知道是否异常,还有printStream对象构建时能够设置为autoflush=true,这时如下情况flus()方法会被调用:

this means that the flush method is automatically invoked after a byte array is written, one of the println methods is invoked, or a newline character or byte '\n' is written.

在这提醒一下:要区分流结束符和换行符

我们使用PrintStream的场景多半是要用到它的打印方法print和println,这些方法会将传给他们的对象参数转化为string,然后再把string转化为特定编码的字节数组,最后才输出到底层的输出流。我们通过分别指向如下代码就明白了:

代码1:

PrintStream out = new PrintStream(new FileOutputStream("numbers.dat"));
for (int i = 0; i <= 127; i++) out.write(i);

结果1:

代码2:

PrintStream out = new PrintStream(new FileOutputStream("numbers.dat"));
for (int i = 0; i <= 127; i++) out.print(i);

结果2:

 

我们还经常用到的是它的格式化输出方法printf(), 这个底层是和Formatter,Formattable,Appendable等类和接口有关的

       

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值