Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
此页面包含一些代码片段,向你显示几个常见方案。
String
String 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 支持补充字符。以下示例是生成消息的简单方法。
// recommended System.out.printf("Character %c is invalid.%n", codePoint);
以下方法很简单并且避免了连接(译注:?应该是上面的方法才避免了连接),连接会使得文本更难以本地化,因为并非所有语言都以与英语相同的顺序将数值插入到字符串中。
// not recommended System.out.println("Character " + String.valueOf(char) + " is invalid.");