样例用法

原文: https://docs.oracle.com/javase/tutorial/i18n/text/usage.html

此页面包含一些代码片段,向您显示几个常见方案。

从代码点创建String

  1. String newString(int codePoint) {
  2. return new String(Character.toChars(codePoint));
  3. }

从代码点创建String - 针对 BMP 字符进行了优化

Character.toChars方法创建一次使用然后丢弃的临时数组。如果这会对性能产生负面影响,则可以使用以下针对 BMP 字符(由单个char值表示的字符)进行优化的方法。在此方法中,仅为补充字符调用toChars

  1. String newString(int codePoint) {
  2. if (Character.charCount(codePoint) == 1) {
  3. return String.valueOf(codePoint);
  4. } else {
  5. return new String(Character.toChars(codePoint));
  6. }
  7. }

批量创建String对象

要创建大量字符串,前一个代码段的批量版本会重用toChars方法使用的数组。此方法为每个代码点创建单独的String实例,并针对 BMP 字符进行了优化。

  1. String[] newStrings(int[] codePoints) {
  2. String[] result = new String[codePoints.length];
  3. char[] codeUnits = new char[2];
  4. for (int i = 0; i < codePoints.length; i++) {
  5. int count = Character.toChars(codePoints[i], codeUnits, 0);
  6. result[i] = new String(codeUnits, 0, count);
  7. }
  8. return result;
  9. }

生成消息

格式化 API 支持增补字符。以下示例是生成消息的简单方法。

  1. // recommended
  2. System.out.printf("Character %c is invalid.%n", codePoint);

以下方法很简单并且避免了连接,这使得文本更难以本地化,因为并非所有语言都以与英语相同的顺序将数值插入到字符串中。

  1. // not recommended
  2. System.out.println("Character " + String.valueOf(char) + " is invalid.");