谁能告诉我Java中String的'+'运算符的确切实现。我知道这是连接两个字符串的 concat 运算符,因为 String 是一个类,那么这个运算符的实现在哪里以及它是如何工作的?
问问题
602 次
2 回答
6
该实现是特定于编译器的,尽管它通常只是在幕后创建 a StringBuffer
or并附加到它。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 回答