2010-12-03 65 views

回答

1

通常,這三個陳述都做同樣的事情。當然,如果temp包含您剛剛使用Reader.read()讀取的字符並且該字符不是UTF-16替代字符,則情況就是如此。 (這是否做「正確」的事情取決於默認字符編碼是否支持您要編寫的字符。)

如果temp包含的Unicode碼值大於65535,則第一條語句會最終會損壞代碼點,但第二個和第三個語句會導致正在輸出的字符的正確表示形式...以默認字符集問題爲模。

如果temp包含一個UTF-16替代字符,那麼我不太確定會發生什麼。我懷疑它會起作用。然而,對於PrintStream.print(char)的javadoc的文字閱讀使UTF-16甚至UTF-8轉換可能會將單個替代字符視爲錯誤。但是,除非您的Reader正在以包含大於65535的Unicode代碼點的流讀取,否則這是毫無意義的。

4

前兩個基本上是相同的,除了要調用該角色對象,而不是原始數據類型炭。第三個是不需要的另一個步驟,System.out.print將輸入變爲可讀輸出字符串,因此不需要將char解析爲字符串。

第一種方法是完成您所需要完成的完美方法。