阅读此文前最好预习String源码分析及AbstractStringBuilder源码分析

 通过解读三者源码便可分析如下区别:

1.String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组.但是String里面的char数组是final的,而StringBuffer,StringBuilder不是,也就是说,String是不可变的,想要新的字符串只能重新生成String.而StringBuffer和StringBuilder只需要修改底层的char数组就行.相对来说,开销要小很多.

2.String的大多数方法都是重新new一个新String对象返回,频繁重新生成容易生成很多垃圾.

3.StringBufferhe和StringBuilder都是继承自AbstractStringBuilder的,两者的方法也大都是调用父类的方法,StringBuffer是线程安全的,StringBuilder是线程不安全的.因为StringBuffer的方法是加了synchronized锁起来了的,而StringBuilder没有.

4.增删比较多时用StringBuffer或StringBuilder(注意单线程与多线程)。

Last modification:December 25th, 2019 at 12:00 pm
如果觉得我的文章对你有用,请随意赞赏
评论打卡也可以哦,您的鼓励是我最大的动力!