2013-09-30 65 views
0

例如,如果我有关闭扫描仪或重新分配扫描仪更有效率吗?

Scanner scan = new Scanner(System.in); 
scan.close(); 
scan = new scanner(new File("file.txt")); 

那会是比

Scanner scan = new Scanner(System.in); 
scan = new scanner(new File("file.txt")); 

更快或者是基本相同的运行时间,并使用相同的资源?

感谢

+2

注意'Scanner#close()'关闭了它的底层'InputStream',所以除非你想关闭'System.in',否则不要这样做。对于任何其他'InputStream'来源,推荐并且必须关闭它。 –

+0

哦,你是对的,谢谢 –

+0

这不是一个选择。你必须关闭旧的扫描仪。仅仅重新分配引用它的变量不会这样做。 – EJP

回答

1

当你做scan.close()你释放底层的资源。不调用函数的速度会更快(即使它是无操作的,与执行调用和返回有一定的关联时间),但可能会导致资源被程序保持打开(并可能被锁定),直到您的程序退出。

+0

谢谢,这是我正在寻找。 –