当前位置: 首页 > 网络应用技术

Java缝合字符串,为什么StringBuilder比字符串快?

时间:2023-03-05 16:54:59 网络应用技术

  因为字符串使用+剪接字符串,所以一次创建新对象,即新的字符串。

  StringBuilder使用append()方法来拼接字符串而不创建新对象。

  那为什么慢呢?因为创建对象很慢。为什么创建者慢?因为创建对象应该分配内存和其他操作。如果只是几个对象,那就可以不影响,因为基本上没有任何对象差异。如果创建了数万个对象,它将开始影响。

  StringBuilder从头到尾都只有一个对象,而无需创建新对象,还需要分配内存。分配内存时?当内存不够时,不会检查内存,然后容量将是自动扩展 - 但每次剪接时都可以扩展,因为扩展后可能会剪接多次,但是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/6844903842723659789Heading-6

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