在 Java 源代码中,字符串的“+”在哪里实现?

String是 Java 中的一个特例。这是一个类,我可以在源代码中检查它,但它也有自己的中缀运算符 ,这似乎是 语法糖。+StringBuilder

例如

"Hello " + yourName;

可能成为

new StringBuilder().append("Hello ").append(yourName).toString();

Java 中没有用户定义的运算符,因此在 何处指定了 ?+String

是否可以使用相同的机制来创建其他运算符,例如向量?


答案 1

+在 Java 编译器中实现。编译器将 + 替换为编译时常量或代码。请注意,这也适用于基元。即,可以在编译期间直接替换到。StringStringStringBuilderint i=1+2int i=3


答案 2

您可以检查规格。编译器有它的实现,而不是Java源代码。

Java Language Specification- 15.18.1. String Concatenation Operator +

实现可以选择在一个步骤中执行转换和串联,以避免创建然后丢弃中间 String 对象。为了提高重复字符串串联的性能,Java 编译器可以使用 StringBuffer 类或类似技术来减少通过计算表达式创建的中间 String 对象的数量。

它显示了实现依赖于编译器的证据。