StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢?
关于String的讲解请看Java基础(三) String深度解析
首先看下面的例子
![ee7ecdbab562e3759a751886b5361845.png](https://i-blog.csdnimg.cn/blog_migrate/5117788a8293f7d6439ca5a0a1901d41.jpeg)
上述代码中3处循环完成了同样的功能,字符串拼接,执行的结果如下:
![e717ddc1e1c62a608e68fbea590e6201.png](https://i-blog.csdnimg.cn/blog_migrate/0be1a4e877cf749db8425721fba7a253.jpeg)
可以看出执行时间差别太大,为了解决String不擅长的大量字符串拼接这种业务场景,引入了StringBuffer和StringBuilder.
首先我们分析一下为什么String在大量字符串拼接这种场景下这么慢?
因为String本身不可变,我们对String的任何操作都会返回一个新的对象,然后当前String变量指向新的对象,而原来的String对象就会被GC回收,那么在循环中就会大量快速的创建新的对象,大量原来的对象会不断的被GC回收,消耗的时间是非常恐怖的,而且内存占用非常大。
下面我们对比了String、StringBuffer与StringBuilder的区别