簡體   English   中英

java中的(char)temp和Character.toChars(temp)和String.valueOf(Character.toChars(temp))有什么區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM