从这些我得到了相同的结果,有什么区别?哪个更好?
temp是一个整数,从reader.read()读取

System.out.print((char)temp);

System.out.print(Character.toChars(temp));

System.out.print(String.valueOf(Character.toChars(temp)));

最佳答案

通常,这三个语句都做相同的事情。当然,如果temp包含您刚刚使用Reader.read()读取的字符并且该字符不是UTF-16替代字符,就是这种情况。 (是否执行“正确”操作取决于默认字符编码是否支持您尝试编写的字符。)

如果temp包含一个大于65535的Unicode代码点,则第一条语句最终将破坏该代码点,但是第二条和第三条语句将导致输出正确的字符表示形式...以默认值为模字符集问题。

如果temp包含UTF-16代理字符,那么我不太确定会发生什么。我怀疑它会起作用。但是,对PrintStream.print(char)的javadoc进行字面读取可能会导致即使从UTF-16到UTF-8的转换也可能会将单个代理字符视为错误。但是,除非您的阅读器读取的流包含大于65535的Unicode代码点,否则这没有什么意义。

09-30 13:56
查看更多