String s1 = "Sk";
s1.concat(" Y");
System.out.println("s1 refers to "+s1);
上述代码生成输出“Sk”而不是“Sk Y”。我希望我能够解释清楚。为什么?'concat'为什么不改变String?
String s1 = "Sk";
s1.concat(" Y");
System.out.println("s1 refers to "+s1);
上述代码生成输出“Sk”而不是“Sk Y”。我希望我能够解释清楚。为什么?'concat'为什么不改变String?
s1.concat(" Y");
不会改变s1
(它不能,因为字符串是不可变的)。
它返回一个新字符串:
String s2 = s1.concat(" Y");
System.out.println("s2 refers to "+s2);
你能解释更多细节immutable吗或指定一个链接? –
@Shashwat没有太多解释。不可变的对象意味着你不能在创建它之后改变它的状态。当你写'String s1 =“Sk”;'时,'s1'指向一个不可变的对象,所以你在's1'上调用的任何方法都不会改变那个String的内容。另一方面,StringBuilder是一个可变对象。调用StringBuilder对象的'append'方法会改变该对象的内容。 – Eran
http://stackoverflow.com/questions/279507/what-is-meant-by-immutable –
CONCAT不会改变字符串,Java字符串是不可变的。尝试s1 = s1.concat(“Y”)。 – pete23