2012-10-15 42 views
2

嗨,大家好,同時讀取輸入數據流,我們使用添加一個整數向量

BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); 

如果BufferedReader是那麼好讀流爲什麼不能,我們只是使用

BufferedReader stdin=new BufferedReader(System.in); 

爲什麼我們需要InputStreamReader ??

+0

因爲......這不是它的工作方式?爲什麼你不能將'String'傳遞給需要'Integer'的東西? –

回答

2

BufferedReader似乎是Reader類的包裝類。用System.in構造一個BufferedReader簡直是無效的語法。其原因BufferedReader類來自於文檔:

一般而言,每個讀取由讀取器的請求導致要由底層字符或字節流中的對應 讀請求。因此建議使用 將BufferedReader包裝在read()操作可能代價高昂的任何Reader 周圍,例如FileReaders和InputStreamReaders。例如,

BufferedReader in = new BufferedReader(new FileReader(「foo.in」));

將緩衝來自指定文件的輸入。如果沒有緩衝,每個調用read()或readLine()都可能導致文件從 中讀取字節,轉換爲字符,然後返回,這可能是效率非常低的 。

0

輸入流讀取器通過PipeLining連接到緩衝讀取器。

JVM將分配一定量的緩衝空間來存儲一次性輸入,而不是通過逐字節或逐字節地存儲輸入。因此,在用戶通過InputStreamReader完全輸入輸入後,輸入將存儲在由JVM分配的緩衝區中。 使用本讀卡器,讀取速度更快,以便後續處理。

0

因爲System.in是Streams和BufferedReader是讀者,所以你不能把流內置在閱讀器,所以你必須爲你的讀者轉換它,就像你在做什麼。

new BufferedReader(new InputStreamReader(System.in)); 

讀取器和編寫操作的編碼(UTF-8,ISO8859-2, 等),也被稱爲 「文本」 下字符。流操作字節,不一定是構成任意對象的字節 。 (大多數操作字節數組)。這些數據也被稱爲「二進制數據」。