[英]what is the difference between (char)temp and Character.toChars(temp) and String.valueOf(Character.toChars(temp)) in java
從這些我得到了相同的結果,有什么區別? 哪個更好? temp是一個整數,從reader.read()讀取
System.out.print((char)temp);
System.out.print(Character.toChars(temp));
System.out.print(String.valueOf(Character.toChars(temp)));
前兩個基本相同,除了您要調用Character對象而不是原始數據類型char。 第三步只是不需要的另一步驟,無論如何System.out.print都會將輸入轉換為可讀的輸出字符串,因此無需將char解析為字符串。
第一種方法是完成所需工作的完美方法。
通常,這三個語句都做相同的事情。 當然,如果temp
包含您剛剛使用Reader.read()
讀取的字符,並且該字符不是UTF-16替代字符,就屬於這種情況。 (是否執行“正確”操作取決於默認字符編碼是否支持您嘗試編寫的字符。)
如果temp
包含一個大於65535
的Unicode代碼點,則第一條語句最終將破壞該代碼點,但是第二條和第三條語句將導致輸出正確的字符表示形式...以默認字符集問題為模。
如果temp
包含UTF-16代理字符,那么我不太確定會發生什么。 我懷疑它會起作用。 但是,對PrintStream.print(char)
的javadoc進行字面讀取可能會使即使UTF-16到UTF-8的轉換也可能會將單個代理字符視為錯誤。 但是,除非您的閱讀器將流作為包含大於65535
Unicode代碼點的流進行讀取,否則這沒有什么意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.