我遇到了为什么 Java 中的字符串连接的运行时间为 O(N) 的问题。有人可以解释为什么会这样,以及使用 StringBuilder 类是否具有相同的复杂性?
2 回答
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
慕田峪7331174
TA贡献1828条经验 获得超13个赞
每次连接字符串时,都会创建一个新缓冲区并复制内容。字符串在 Java 中是不可变的。
StringBuilder/StringBuffer 使用内部缓冲区,并且仅在您调用 toString() 时创建一个不可变的字符串。更少的复制和分配导致更快的代码。只有在内部缓冲区用完时才会进行复制和分配;您也可以控制该缓冲区大小。
现在,更令人困惑的是,一些基于 Java 的语言知道是否可以优化字符串,并在幕后创建字符串缓冲区,因此您并没有真正从使用基于缓冲区的类中受益。
添加回答
举报
0/150
提交
取消