我编写了一些代码并使用了一个字符串,我使用+ =进行了连接(因为我只做了几次。
后来我使用了另一个字符串并使用了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工作正常。
大卫。
答案 0 :(得分:6)
好的,我们每天至少看几次这个问题。
Strings
为immutable
,因此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。