我是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) 方法调用和最终字符串生成。

08-04 16:09