为什么Java的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”没有连接在一起?

一个string是不可变的 ,这意味着你不能改变一个string在Java中。 concat()返回一个新的连接的string。

 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); 

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

 s.concat("ING"); 

尝试这个:

 s = s.concat("ING"); 

我想你想要做的是:

 s2 = s.concat("ING"); 

concat函数不会更改strings,只会返回s,并带有参数。

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

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

应该打印:

你好你好世界

.concat()方法返回新的连接值。 在那里你做了s.concat("ING") – >这给了返回值“testing”。 但是你必须在声明的variables中接收它。

如果你做了s=s.concat("ING"); 那么“s”的值就会变成“TESTING”

由于在任何String obj上调用concat()时,String都是不可变的

String s =“abc”; 新的stringobj被创build在string池ref由s

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