0
我最近讀到System.out和System.in是PrintStreams,它們是字節流類,即它們處理字節。那麼當Java使用16位Unicode字符時,他們如何讀取輸入並將輸出寫爲字符?System.out如何實現字符的控制檯輸出?
我最近讀到System.out和System.in是PrintStreams,它們是字節流類,即它們處理字節。那麼當Java使用16位Unicode字符時,他們如何讀取輸入並將輸出寫爲字符?System.out如何實現字符的控制檯輸出?
我們所犯的一個明顯的錯誤是,當我們在上面看到這樣的文檔/教程時,System.in/out/err
如何處理字節數組,以及我們假定,一個字節是一個字符。
想到這樣,字節是隻是0/1值的8位和有一個char 類型,這實際上是字符由兩個字節。即16位。
那麼如何做System.in/out/err涉及字節?
的事情是他們喜歡InputStream
和OutputStream
類的implementaion的,使用這些API /實現的服務隊,我們將看到實際字符讀/寫上我們的控制檯。
基本上他們使用CharsetEncoder apis來實現這些事情。按照該文件,
/**
* An engine that can transform a sequence of sixteen-bit Unicode characters
* into a sequence of bytes in a specific charset.
* ... ...
*/
public abstract class CharsetEncoder
還要檢查這個文檔,它解釋了unicode是如何在Java中處理。
感謝您的回答。我一直認爲這些字節流遵循一些自動的16位Unicode到8位Ascii轉換來顯示控制檯中的字符。我會閱讀你建議我的unicode文檔。 – Birendra
沒問題。另外閱讀'CharsetEncoder' JavaDoc,你可能會得到更多的清晰。 – rajuGT