2011-01-23 54 views
1

如何在屏幕上來的System.out.println()方法打印字符時出是用於顯示的PrintStream&的PrintWriter

+0

這可能是最好的,如果你能詳細說明你的問題。我可以通過多種方式回答這個問題,但我不確定哪種方式是合適的。我也不想對我的答案不小心冒犯...... – 2011-01-23 20:02:01

回答

0

System.out的是一種特殊的PrintStream,誰的輸出被顯示字節類型的打印流的在控制檯上。檢查here以獲取更多文檔。

3

我想這一段代碼(來自java.lang.System)解釋它:

FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out); 
setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true)); 

據創建FileOutputStream到標準出來,然後把它包裝在PrintStreamFileDescriptor.out是「標準輸出流的句柄」。

它使用平臺默認編碼將字節轉換爲字符。

11

PrintStream在Java 1.0中引入並用於其他System.out。後來他們意識到使用平臺默認編碼將字節轉換爲字符是一個主要的錯誤,所以稍後他們會引入PrintWriter與Java 1.1,它能夠接受OutputStreamWriter,其中您可以指定字符編碼。然而,要改變System.out已經太晚了。

+0

+1爲歷史信息 – Bozho 2011-01-23 20:09:23

0

PrintStream是一個字節流和PrintWriter是字符流,但在一切都面向字節的最低水平,我什麼地方讀每個PrintStream結合有OutputStreamWriter,它通過這個寫入器以產生用於輸出字節通過了所有的字符。