Sample Usage

该页面包含一些代码片段,向您展示了几种常见场景。

从代码点创建字符串

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

从代码点创建字符串-针对 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));
    }
}

批量创建字符串 对象

要创建大量字符串,前一片段的批量版本将重用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;
}

Generating Messages

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

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

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

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