如何将字符数组转换回字符串?

446

我有一个字符数组:

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};

我的当前解决方案是执行

String b = new String(a);

但肯定有更好的方法吧?


173
你为什么认为有更好的方式?不要叫我谢莉。 :) - Hovercraft Full Of Eels
1
因为我总是认为像上面这样创建新变量在运行时会有一些额外的开销。比如,如果我将上述代码行用于将字符数组转换为字符串,并将其放入for循环中,对我来说看起来不太对劲。是的,我有点完美主义…… - chutsu
2
如果你有很多这些字符,比如一个char[]的数组或集合,那么也许你会将这些char数组附加到StringBuffer中,但对于偶尔出现的字符串,大多数人使用你发布的方法。 - Hovercraft Full Of Eels
14
“创建新变量”不会产生任何额外负担。 变量是用于引用值的名称,名称本身在运行时(至少在像Java这样反射相对有限的语言中)并不存在于内存中。 “负担”来自于构造一个新的,考虑到您的问题是“构造此值”,在此情况下无法避免。 您不能使字符数组神奇地转化为字符串。 您可以安排在创建字符串后原始字符数组被垃圾回收。 - Karl Knechtel
在您的示例中使用String构造函数意味着字符串对象不会在字符串池中。 - Ammar Samater
显示剩余2条评论
14个回答

-1
String output = new String(charArray);

其中charArray是字符数组,output是将您的字符数组转换为字符串。


-3

试试这个:

CharSequence[] charArray = {"a","b","c"};

for (int i = 0; i < charArray.length; i++){
    String str = charArray.toString().join("", charArray[i]);
    System.out.print(str);
}

-4

你也可以使用 StringBuilder 类

String b = new StringBuilder(a).toString();

使用String或StringBuilder取决于您的方法需求。


为什么呢?你从中得到了什么? - Casey

-12

另一种方法是这样做:

String b = a + "";

3
这个假设是错误的,因为它假定toStringchar[]上可以正确工作。这可能在某些特定的JVM供应商和版本上有效。 - fommil
3
因为String类是不可变的,所以这将导致执行两个操作:在a上调用toString()方法和创建另一个字符串对象,它与a.toString()""连接起来。 - Alpay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接