今天在刷leetcode的时候看到了StringBuffer,并且使用到了它做字符串反转,就来查了下StringBuffer的用法,并且看到了它与String以及StringBuilder之间的区别,在此写下自己的学习体会。
1、在java中,String为字符串常量,但是StringBuffer以及StringBuilder都是字符串变量。
2、三者在速度上的比较 StringBuilder > StringBuffer > String。
3、在线程安全性方面,String中对象是不可变的,显然是线程安全的。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder没有对方法进行加同步锁,所以是非线程安全的。
4、对于三者的总结:(1)少量数据使用String
(2)单线程操作大量数据使用StringBuilder
(3)多线程下操作大量数据使用StringBuffer