2010-12-03 94 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解析为字符串。

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