0

我已经编写了一些代码并使用了我使用 += 连接的字符串(因为我只做了几次。

后来我使用了另一个字符串并使用了 concat() 函数。并且串联不起作用。

所以我在Junit(用eclipse)写了一个小方法......

@Test
public void StingConcatTest(){

    String str = "";

    str += "hello ";
    str += " and goodbye";

    String conc="";
    conc.concat("hello ");
    conc.concat(" and goodbye");
    System.out.println("str is: " + str + "\nconc is: "+ conc);

输出是...

str is: hello  and goodbye
conc is: 

所以要么我快疯了,我做错了什么(很可能),JUNIT 有问题,或者我的 JRE / eclipse 有问题。

请注意,字符串生成器工作正常。

大卫。

4

6 回答 6

7

好的,我们每天至少会看到这个问题几次。

Stringsimmutable,所以对 String 的所有操作都会产生 new String

conc= conc.concat("hello ");您需要再次将结果重新分配给字符串

于 2012-08-31T15:31:05.750 回答
3

You have to try with:

String conc="";
conc = conc.concat("hello ");
conc = conc.concat(" and goodbye");
System.out.println("str is: " + str + "\nconc is: "+ conc);

For sake of optimization you can write:

String conc="";
conc = conc.concat("hello ").concat(" and goodbye");
System.out.println("str is: " + str + "\nconc is: "+ conc);
于 2012-08-31T15:31:37.567 回答
2

如果您计划连接多个字符串,您还可以使用 StringBuilder:

StringBuilder builder = new StringBuilder();
builder.append("hello");
builder.append(" blabla");
builder.append(" and goodbye");
System.out.println(builder.toString());
于 2012-08-31T15:33:54.070 回答
1

concat 返回一个字符串。它不会更新原始字符串。

于 2012-08-31T15:33:12.900 回答
0

concat() 返回连接的字符串。

public static void main(String [] args) {
    String s = "foo";

    String x = s.concat("bar");

    System.out.println(x);
}
于 2012-08-31T15:32:29.057 回答
0

String.concat 不会更改调用它的字符串 - 它返回一个新字符串,该字符串是字符串和参数连接在一起。

顺便说一句:使用 concat 或 += 的字符串连接性能不是很好。您应该改用StringBuilder类。

于 2012-08-31T15:33:53.727 回答