1
13
从 Fine Manual :
看见 String Concatenation 在JLS。 |
2
8
编译器将您的代码视为您编写了以下内容:
编辑:有参考资料吗?好吧,如果我编译并反编译OP的代码,我会得到:
就像我说的。 |
3
3
这里的大多数答案都是正确的(由编译器处理,+转换为.append()…) 我想补充一点,每个人都应该看看字符串和附加的源代码,这是相当令人印象深刻的。 我相信归根结底是这样的:
=
但随后一些魔法发生了。这会变成:
然而大多数人相信它会创造“ab”,当它创造“abc”时,就把它扔掉了。它实际上知道自己被锁住了,并进行了一些操作。 还有一个技巧,如果你有一个字符串“abc”并且你要求一个结果是“bc”的子字符串,那么它们可以共享完全相同的底层数组。您会注意到有一个起始位置、结束位置和“共享”标志。 事实上,如果它没有被共享,它就有可能扩展一个字符串的长度并复制其他字符串。 现在我只是有点困惑。阅读源代码——相当酷。 |
4
2
|
5
2
这是记录在 language specification
|
6
0
这是在语言层面上完成的。Java语言规范是 very specific about what string addition must do . |
7
0
|
Noah Wilder · Swift中元组的操作符重载 6 年前 |
Salman · 指向具有数组索引运算符重载的类的指针 6 年前 |
Nom OnTheCookie · 使用向量重载C++输出 6 年前 |
J. Doe · C++重载:从友元函数切换到成员函数 6 年前 |
Ana · 使用操作符重载添加存储在vector中的类对象 6 年前 |
Matthew · 重载运算符|用于固定大小的阵列? 6 年前 |
Martin Žid · 重载运算符+=具有两个类 6 年前 |