字符串连接不起作用,或者它是一个错误

时间:2012-08-31 15:30:20

标签: java string

我编写了一些代码并使用了一个字符串,我使用+ =进行了连接(因为我只做了几次。

后来我使用了另一个字符串并使用了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有问题。

请注意,stringbuilders工作正常。

大卫。

6 个答案:

答案 0 :(得分:6)

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

Stringsimmutable,因此String上的所有操作都会产生新的String

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

答案 1 :(得分:3)

你必须尝试:

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

为了优化,你可以写:

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

答案 2 :(得分:2)

如果您打算连接多个字符串,您也可以使用StringBuilder:

StringBuilder builder = new StringBuilder();
builder.append("hello");
builder.append(" blabla");
builder.append(" and goodbye");
System.out.println(builder.toString());

答案 3 :(得分:0)

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

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

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

    System.out.println(x);
}

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

顺便说一句:使用concat或+ =的字符串连接不是很有效。您应该改为使用班级StringBuilder