Java中'String'运算符的实现是什么?我可以看到这个实现?

时间:2013-06-25 07:19:41

标签: java

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

2 个答案:

答案 0 :(得分:6)

该实现是特定于编译器的,尽管它通常最终会在幕后创建StringBufferStringBuilder并附加到它上面。请注意,它对效率有特殊处理,因此可以将x + y + z编译为类似

的内容
new StringBuilder().append(x).append(y).append(z).toString();

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

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

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

答案 1 :(得分:2)

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

相同
a + b
今天

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

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

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