sdg*_*sdh 35 java string string-concatenation operators
String是Java中的一个特例.这是一个类,我可以在源代码中检查它,但它也有自己的中缀运算符+,它似乎是语法糖StringBuilder.
例如,
"Hello " + yourName;
Run Code Online (Sandbox Code Playgroud)
可能成为
new StringBuilder().append("Hello ").append(yourName).toString();
Run Code Online (Sandbox Code Playgroud)
Java中没有用户定义的运算符,所以在哪里+指定String?
是否可以使用相同的机制来制作其他运算符,例如向量?
The*_*ind 44
+在java 编译器中实现.编译器替换 String + String与任何编译时间常数或StringBuilder代码.请注意,这也适用于基元.即,int i=1+2可以int i=3在编译期间直接替换为.
Sur*_*tta 23
您可以查看规格.编译器具有它的实现,而不是Java源代码.
Java Language Specification- 15.18.1. String Concatenation Operator +
实现可以选择在一个步骤中执行转换和连接,以避免创建然后丢弃中间String对象.为了提高重复字符串连接的性能,Java编译器可以使用StringBuffer类或类似技术来减少通过计算表达式创建的中间String对象的数量.
它显示了实现取决于编译器的证据.