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