为什么Java的concat()方法没有做任何事情?

时间:2010-05-12 12:39:14

标签: java string concat

此代码:

String s = "TEST";
String s2 = s.trim();

s.concat("ING");
System.out.println("S = "+s);
System.out.println("S2 = "+s2);

导致此输出:

S = TEST
S2 = TEST
BUILD SUCCESSFUL (total time: 0 seconds)

为什么“TEST”和“ING”没有连接在一起?

6 个答案:

答案 0 :(得分:46)

String是immutable,这意味着您无法在Java中更改String。 concat()返回一个新的连接字符串。

String s = "TEST";
String s2 = s.trim();
String s3 = s.concat("ING");

System.out.println("S = "+s);
System.out.println("S2 = "+s2);
System.out.println("S3 = "+s3);

答案 1 :(得分:9)

因为String是不可变的 - 类String不包含更改String对象本身内容的方法。 concat()方法返回包含操作结果的新String。而不是:

s.concat("ING");

试试这个:

s = s.concat("ING");

答案 2 :(得分:3)

我认为你想要做的是:

s2 = s.concat("ING");

concat函数不会更改字符串s,只返回附加了参数的s。

答案 3 :(得分:3)

concat返回一个字符串,所以你基本上调用concat而不存储它返回的内容。 试试这个:

String s = "Hello";
String str = s.concat(" World");
System.out.println(s);
System.out.println(str);

应打印:

Hello
Hello World

答案 4 :(得分:1)

.concat()方法返回新的连接值。 你做过s.concat("ING") - >这给出了返回值" Testing"。但是你必须在声明的变量中接收它。

如果你做了s=s.concat("ING");那么" s"将改为" TESTING"

答案 5 :(得分:0)

当在任何String obj上调用concat()为

时,String是不可变的

String s =“abc”; 新的String obj在字符串池ref中由s

创建

s = s.concat(“def”); 这里再创建一个带有val abcdef的String obj并由s

引用