0

谁能告诉我Java中String的'+'运算符的确切实现。我知道这是连接两个字符串的 concat 运算符,因为 String 是一个类,那么这个运算符的实现在哪里以及它是如何工作的?

4

2 回答 2

6

该实现是特定于编译器的,尽管它通常只是在幕后创建 a StringBufferor并附加到它。StringBuilder请注意,它对效率进行了特殊处理,因此x + y + z可以编译为

new StringBuilder().append(x).append(y).append(z).toString();

...并且还执行常量字符串表达式的编译时连接。

您可以看到JLS 第 15.18.1 节中描述的运算符,但这并不要求任何特定的实现。

要查看您的特定编译器做了什么,只需编译一些您感兴趣的代码,然后使用javap -c它来查看它生成的字节码。

于 2013-06-25T07:22:35.143 回答
2

编译器可能会优化字符串+。如果不是,则与

a + b

成为当今大多数 JVM(旧版本使用 StringBuffer)

new StringBuilder().append(a).append(b).toString();

所以 StringBuilder.append() 就是你想要的。

于 2013-06-25T07:22:28.873 回答