我是Java的初学者。我对String上的+=
操作有疑问。为什么可以使用+=
运算符来附加String对象而不使用双引号?
例如,这段代码我没有编译器错误
String s1 = "abc";
String s1+=42;
当我真正想到要使用
s1+="42"
时; 最佳答案
String s1+=def;
该行是有效的,然后
def
是另一个Java字符串。由于编译成功,因此在代码中的某些位置 String def ="someDeclaredStringBefore";
**Update:**
为了弄清楚那里发生了什么,首先让我们看看
+
如何在字符串上工作。它使用StringBuilder append方法。对于前
StringBuilder compilerGeneratedBuilder = new StringBuilder();
compilerGeneratedBuilder.append("str");
compilerGeneratedBuilder.append("ingcon");
compilerGeneratedBuilder.append("catenation");
String finalString = compilerGeneratedBuilder.toString();
我最近在这里写的全文:
http://codeinventions.blogspot.com/2014/08/compiler-version-string-concatenation.html
当您编写
String r += 42;
时由于您尝试添加
int
值。对StringBuilder的对应 append(int i)
方法调用和最终字符串生成。