本教程适用于JDK 8。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言特性的概述,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息,请参阅JDK发行说明。
本页包含一些代码片段,展示了一些常见的场景。
StringString newString(int codePoint) {
return new String(Character.toChars(codePoint));
}
String - 适用于BMP字符的优化Character.toChars方法创建了一个临时数组,该数组仅使用一次后即被丢弃。如果这对性能产生了负面影响,可以使用以下适用于BMP字符(由单个char值表示的字符)的优化方法。在该方法中,toChars仅对辅助字符进行调用。
String newString(int codePoint) {
if (Character.charCount(codePoint) == 1) {
return String.valueOf(codePoint);
} else {
return new String(Character.toChars(codePoint));
}
}
String对象为了创建大量字符串,前一个代码片段的批量版本重用了toChars方法使用的数组。该方法为每个码点创建一个单独的String实例,适用于BMP字符。
String[] newStrings(int[] codePoints) {
String[] result = new String[codePoints.length];
char[] codeUnits = new char[2];
for (int i = 0; i < codePoints.length; i++) {
int count = Character.toChars(codePoints[i], codeUnits, 0);
result[i] = new String(codeUnits, 0, count);
}
return result;
}
格式化API支持辅助字符。以下示例是生成消息的简单方法。
// 推荐使用
System.out.printf("字符 %c 无效。%n", codePoint);
以下方法简单且避免了连接操作,这使得文本更难以本地化,因为并非所有语言都按照英语的顺序将数字值插入字符串。
// 不推荐使用
System.out.println("字符 " + String.valueOf(char) + " 无效。");