关于System.out.close()的一点记录

我们都知道平常在写代码的时候会写出System.out.println("")这种输出语句,我们都是知道这是一种输出流,而涉及到输出输入流的,一般都需要关闭,也就是调用close()。那么为什么在用到System.out.println()这种语句的时候一般不会调用System.out.close()语句?在生产上使用System.out.println()会不会产生大量句柄,导致资源泄露呢?

答案其实很简单,我们查看源码会发现,其实out是PrintStream的一个静态实例,如下图:


如果使用的流是静态的,那么无论调用多少次都不会有影响,也不会导致资源泄露的问题。当然如果是通过new PrintStream()实例化的流,那么就需要自己调用close来关闭流。

那么如下图的代码执行后,会输出哪些语句呢?


当然在System.out.close()后,流被关闭了,后续所有的输出语句在执行后都不会输出到控制台了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容