2013-07-30 85 views
2

直接從該掃描儀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(); 
+1

這是一個很好的做法,總是關閉你完成它們的資源,或者編譯器會抱怨和關於內存泄漏的拙劣錯誤。 – hayonj

回答

2

我不這麼認爲,但它是最好仍要關閉它在您改變代碼,使用流。這也是一個很好的習慣,你真的想進入。

3

首先我們制定我們的習慣;那麼我們的習慣使我們。

我想說關閉流,因爲ingraining習慣像finally塊關閉資源意義。

1

如果我們不關閉String的Scanner將不會有資源泄漏。內部new Scanner(String)創建StringReader作爲基礎來源,當我們關閉Scanner時,它關閉StringReader,這不起作用。

0

如果你想掃描儀爲關閉(以便對象的所有後續操作將立即失敗)被標記,則必須調用Scanner.close()

0

我相信這是一個好主意,使用scanner.close(); 我這樣說是因爲它可以防止資源泄漏,如果你把它變成一種習慣,那麼這對你會非常有益。