2017-03-05 26 views
-2

下面的代碼有什麼區別?當我使用BufferedInputStream獲取用戶輸入時,會產生什麼不同? java

// case01

Scanner sc=new Scanner(new BufferedInputStream(System.in)); 
while(sc.hasNext()) 
    { 
     System.out.println("輸出:"+sc.next()); 
    } 

// case02

Scanner sc=new Scanner(System.in); 
while(sc.hasNext()) 
{ 
    System.out.println("輸出:"+sc.next()); 
} 
+1

[Scanner vs. BufferedReader]的可能重複(http://stackoverflow.com/questions/2231369/scanner-vs-bufferedreader) – nullpointer

回答

0

的BufferedInputStream使用的緩衝器。你可以說它主要用於優化。

0

BufferedInputStream提供了最大的值,因爲它用於封裝一個流,因爲它每次都會預取一個字節的字節,從而導致讀取的每個字節開銷。例如,從硬盤讀取數據時,甚至從套接字讀取時(因爲它限制了讀取每個字節時調用操作系統的開銷)。

但是,System.in通常掛在鍵盤上。所以這種情況下緩衝可以獲得很少的好處。另一個例子是如果一個流是基於字節數組的(例如ByteArrayInputStream)。這兩種情況都沒有真正的好處。

相關問題