为什么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引用