首页>>后端>>java->java拼接字符串,StringBuilder为什么比String快?

java拼接字符串,StringBuilder为什么比String快?

时间:2023-11-30 本站 点击:1

StringBuilder为什么比String快?

因为String用+去拼接字符串,每次都要创建新的对象,即new String。

而StringBuilder用append()方法拼接字符串,不需要创建新的对象。

所以,为什么慢?因为创建对象慢。为什么创建对象慢?因为创建对象要分配内存等等操作。如果只是创建几个对象,还好,不影响,因为基本上没什么区别。如果创建了几万个对象,就开始有影响了。

StringBuilder从始至终只有一个对象,没有创建新的对象,但是也需要分配内存。何时分配内存?就是内存不够的时候,会校验到内存不够,然后自动扩容——但是不是每次拼接都会扩容,因为扩容之后,可能拼接了很多次,但是StringBuilder刚刚扩容申请的内存仍然是够的,那么就不用扩容了,除非下次又不够了,才会继续扩容内存。

源码分析

String

上面说到String某次拼接都会创建新的对象,为什么?因为String的数据是常量,不能被改变。

既然原始字符串对象的数据不能被改变,现在又要拼接成一个新的字符串,怎么办?只能创建新的对象。

StringBuilder

参考链接

https://zhuanlan.zhihu.com/p/65628607

https://www.bilibili.com/read/cv12268169

http://www.javashuo.com/article/p-kmrdipqc-rh.html

https://juejin.cn/post/6844903842723659789#heading-6

https://www.cnblogs.com/xiaofuge/p/13689485.html


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/java/4996.html