关于System.out.close()的一点记录
2017-12-10 本文已影响98人
飞来来
我们都知道平常在写代码的时候会写出System.out.println("")这种输出语句,我们都是知道这是一种输出流,而涉及到输出输入流的,一般都需要关闭,也就是调用close()。那么为什么在用到System.out.println()这种语句的时候一般不会调用System.out.close()语句?在生产上使用System.out.println()会不会产生大量句柄,导致资源泄露呢?
答案其实很简单,我们查看源码会发现,其实out是PrintStream的一个静态实例,如下图:
如果使用的流是静态的,那么无论调用多少次都不会有影响,也不会导致资源泄露的问题。当然如果是通过new PrintStream()实例化的流,那么就需要自己调用close来关闭流。
那么如下图的代码执行后,会输出哪些语句呢?
当然在System.out.close()后,流被关闭了,后续所有的输出语句在执行后都不会输出到控制台了。