# 样本用法

> 原文： [https://docs.oracle.com/javase/tutorial/i18n/text/usage.html](https://docs.oracle.com/javase/tutorial/i18n/text/usage.html)

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

## 从代码点创建`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.");

```