此代码:
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”没有连接在一起?
答案 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
引用