学习 OCAJ7
我知道 String 对象是不可变的。我知道在 String 对象上使用诸如 .concat() 之类的方法只会创建一个具有相同引用名称的新 String 对象。然而,我很难理解以下内容:
String str1 = "str1";
String str2 = "str2";
System.out.println( str1.concat(str2) );
System.out.println(str1);
// ouputs
// str1str2
// str1
String str3 = "fish";
str3 += "toad";
System.out.println(str3);
// outputs
// fishtoad
如果字符串是不可变的,为什么使用+=
连接会影响原始String对象,而.concat()
却不会?如果我只想使用 +=
连接字符串,那么使用 String
是否比使用 StringBuilder
更好,反之亦然?
最佳答案
因为您正在捕获 str3
中新生成的 String 实例的引用
str3 += "toad";
是
str3 = str3 + "toad"
关于java - 为什么我使用 .concat() 和 += 使用 Java 字符串得到不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830996/