任何人都能告诉我Java中String的'+'运算符的确切实现。 我知道这是concat运算符连接两个字符串,因为String是一个类,那么这个运算符的实现在哪里以及它是如何工作的?
答案 0 :(得分:6)
该实现是特定于编译器的,尽管它通常最终会在幕后创建StringBuffer
或StringBuilder
并附加到它上面。请注意,它对效率有特殊处理,因此可以将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()就是你想要的。