Java中Scanner类的scan.close()方法作用及合适的使用时机是什么?
Scanner.close()方法的作用
Scanner属于Java IO体系的资源类,这类资源不会被JVM的自动垃圾回收机制释放占用的系统底层资源,close()方法的核心作用就是手动释放当前Scanner实例持有的输入流资源,避免出现资源泄漏。
适用场景说明
- 当你确定后续不会再通过该
Scanner实例读取任何输入内容时,就可以调用close()方法释放资源。 - 如果你的
Scanner绑定的是System.in标准控制台输入流,调用close()后会连带关闭System.in,导致后续整个程序都无法再读取控制台输入,这种情况下如果你的程序后续还有其他读取控制台的逻辑,就不要关闭绑定System.in的Scanner。 - 如果你的
Scanner绑定的是文件流、网络流等其他独立输入源,使用完毕后必须调用close()释放资源,否则会长期占用文件句柄、连接资源等系统资源,长时间运行的程序会出现资源耗尽的问题。
针对你当前代码的说明
你当前的是单场景的小程序,读取完用户输入后没有其他读取控制台的逻辑,在读取完输入后调用scan.close()是完全合理的,没有副作用。
内容的提问来源于stack exchange,提问作者Jennifer
相关产品推荐
相关产品推荐

