在 Java 中将字符数组转换为字符串

2022-09-03 16:42:40

我有一个数组(不是char数组),我想通过组合数组中的所有字符将其转换为字符串。Character

我已经尝试了以下给定的:Character[] a

String s = new String(a) //given that a is a Character array

但这不起作用,因为 a 不是 char 数组。我将不胜感激任何帮助。


答案 1
Character[] a = ...
new String(ArrayUtils.toPrimitive(a));

ArrayUtilsApache Commons Lang的一部分。


答案 2

最有效的方法很可能是这样的:

Character[] chars = ...

StringBuilder sb = new StringBuilder(chars.length);
for (Character c : chars)
    sb.append(c.charValue());

String str = sb.toString();

笔记:

  1. 使用 StringBuilder 可避免创建多个中间字符串。
  2. 提供初始大小可避免重新分配。
  3. 使用避免呼叫...charValue()Character.toString()

但是,我可能会接受@Torious优雅的答案,除非性能是一个重大问题。


顺便说一句,JLS说编译器可以使用等效的StringBuilder代码来优化字符串串联表达式......但它不批准跨多个语句的优化。因此,如下所示:

    String s = ""
    for (Character c : chars) {
        s += c;
    }

可能会执行许多单独的串联,创建(并丢弃)大量中间字符串。