Java 中字符串连接的计数操作

Counting Operations of String Concatenation in Java

我试图理解为什么字符串连接在 Java 中是 O(n) 时间复杂度。 我们被告知 s1 + s2 将创建一个长度为 s1.length() + s2.length() 的新字符串,并将 s1s2 复制到该新字符串中。 所以下面的成本是(他们)计算出来的 2 + 2(n+1) + 1 => (5 + 2n)

我不确定我是否理解我的讲师是如何计算出来的。有人介意向我解释一下证明上述成本合理的字符串连接操作吗?

我会谨慎地假设 Java 中的字符串连接期间发生的事情,因为它从 Java 9.

开始在内部发生了变化

有关此主题的精彩介绍可在此处找到:https://www.javaspecialists.eu/talks/pdfs/2018%20Voxxed%20in%20Thessaloniki,%20Greece%20-%20%22Enough%20java.lang.String%20to%20Hang%20Ourselves%20...%22%20by%20Heinz%20Kabutz.pdf

还值得一读:https://dzone.com/articles/jdk-9jep-280-string-concatenations-will-never-be-t

已经有点老了,但可能与你有关: