为什么字符串连接与pip行在java中没有返回任何内容(空字符串)?

时间:2012-08-21 13:35:59

标签: java string concatenation

为什么字符串连接与pip行在java中没有返回任何内容(空字符串)?

String product="";
for(Tar t:tars){
    product.concat(t.product.concat("|"));
}
System.out.println(product);

结果不算什么(空字符串)。

3 个答案:

答案 0 :(得分:9)

String#concat返回一个连接的字符串,它不会修改它。字符串在Java中是不可变的。

因此...

product = product.concat(t.product.concat("|"));

但是,我建议使用StringBuilder,其中字符串复制在循环中发生。

答案 1 :(得分:1)

改为使用StringBuilder

StringBuilder product=new StringBuilder();
for(Tar t:tars){
            product.append(t.product).append("|");
}
System.out.println(product.toString());

答案 2 :(得分:1)

如果集合相当大,我建议使用StringBuilder来构建所需的字符串,而不是使用字符串连接。它会提高性能,虽然略有提升。

另见StringBuilder vs String concatenation in toString() in Java

另外,直接从马的嘴里,

String#concat

  

将指定的字符串连接到此字符串的末尾。

     

如果参数字符串的长度为0,则此String对象为。{   回。否则,将创建一个新的String对象,表示一个   字符序列,是字符序列的串联   由此String对象和字符序列表示   由参数字符串表示。