在Java中将字符拼接成字符串

23

在Java中有没有一种方法将char连接起来形成一个String

例如:

String str;
Char a, b, c;
a = 'i';
b = 'c';
c = 'e';

str = a + b + c; // thus str = "ice";
7个回答

34

使用 StringBuilder

String str;
Char a, b, c;
a = 'i';
b = 'c';
c = 'e';

StringBuilder sb = new StringBuilder();
sb.append(a);
sb.append(b);
sb.append(c);
str = sb.toString();

一句话概括:

new StringBuilder().append(a).append(b).append(c).toString();

执行""+a+b+c会得到:

new StringBuilder().append("").append(a).append(b).append(c).toString();

我之前询问过一个相关问题


这绝对是正确的做法。 - le3th4x0rbot

32

使用str = ""+a+b+c;

这里的第一个+String连接符,所以结果将会是一个String。注意""的位置很重要。

或者(可能更好),使用StringBuilder


1
忽略 StringBuilder,那个方法非常完美。 - Michael Behan
StringBuilder相ه¯¹ن؛ژstr = ""+a+b+c;وœ‰ن»€ن¹ˆه›؛وœ‰çڑ„ن¼کهٹ؟هگ—ï¼ں - Jared Nielsen
1
@mbehan,编译器可能会将这种方法优化为 StringBuilder。 - Lucas
3
""+a+b+c 将会得到 new StringBuilder().append("").append(a).append(b).append(c).toString();。请阅读此答案:https://dev59.com/627Xa4cB1Zd3GeqPudd8 - Adam Stelmaszczyk
1
@JaredNielsen,少了一个要连接的项目,但可以忽略不计。最好选择更易读的方式(或者符合公司惯例的方式)。 - Lucas

8
您可以使用 StringBuilder :
    StringBuilder sb = new StringBuilder();
    sb.append('a');
    sb.append('b');
    sb.append('c');
    String str = sb.toString()

如果您已经有了字符,可以将字符数组传递给String构造函数:
String str = new String(new char[]{'a', 'b', 'c'});

如果你已经有了字符,为什么不直接使用String str = "abc";,避免使用冗长的字符数组和字符串实例化呢? - Justin C
@JustinC 一个示例用例是,如果你有保存字符的变量并想要将它们连接起来。 - zr0gravity7

3
如果字符串的大小是固定的,您可能会发现使用字符数组更容易。 如果您需要频繁执行此操作,这也会稍微快一些。
char[] chars = new char[3];
chars[0] = 'i';
chars[1] = 'c';
chars[2] = 'e';
return new String(chars);

另外,我注意到在您的原始问题中,您使用了Char类。如果您的字符不可为空,最好使用小写的char类型。


1
我的2020年目标是在这个帖子中获得第一名。 它已经得到了一票。继续加油。 - Pascal Ganaye

0

试试这个:

 str = String.valueOf(a)+String.valueOf(b)+String.valueOf(c);

输出:

ice

0
使用Character.toString(char)方法。

0

我会使用String.format()

char c = 'a';
String s = String.format("%c%c", c, 'b'); // s is "ab"

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