底层没有流时是否需要关闭Scanner?

Rol*_*all 9 java java.util.scanner

直接从这个 Scanner API

String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
     s.close(); 
Run Code Online (Sandbox Code Playgroud)

duf*_*ymo 5

首先我们养成习惯;那么我们的习惯造就了我们。

我会说关闭流,因为像在finally块中关闭资源这样根深蒂固的习惯是有道理的。


小智 5

即使扫描仪不是流,您也需要关闭它以表明您已完成其底层流[1]。像 Eclipse 这样的 IDE 经常会发出警告,提示您出现“资源泄漏:‘扫描仪’从未关闭”。

注意: 不要关闭与System.in绑定的扫描程序!由于 System.in 对象是由 JVM 打开的,因此您应该将其留给 JVM 来关闭它[2]


tbo*_*odt 2

我不这么认为,但最好还是关闭它,以防您更改代码以使用流。这也是一个好习惯,一个你真正想养成的习惯。