一、StringBuffer类
1、特点
底层是不被final修饰的char数组value,数组地址可以发生改变,当StringBuffer类对象的值发生改变时不用创建新的对象
2、构造方法
3、扩容规则
StringBuffer的底层数组value在扩容时为当前数组的长度2倍加2或者当前数组长度加上要追加字符串的长度
4、添加功能
5、删除功能
6、替换功能
7、反转功能
8、截取功能!!!!!!!!返回值是String类型,StringBufeer对象本身并未发生改变
二、StringBuilder类
StringBuilder类和StringBuffer类的功能都是一致的,唯一的区别在于StringBuffer类除了构造方法外其它方法都被synchronized关键字修饰
三、String、StringBuilder、StringBufferr的适用场景
String:适用于对字符串进行少量操作的情况下
StringBuilder:适用于单线程下在字符缓冲区对字符串进行大量操作的情况下
StringBuffer:适用于多线程下在字符缓冲区对字符串进行大量操作的情况下
四、被synchronized关键字修饰的方法
安全
举例:用户取钱
有三个用户A、B、C同时在网上进行取钱,取钱方法为getMoney,getMoney中有一个if语句判断,如果剩余的钱大于0才能进到取钱程序里,如果getMoney这个方法不被synchronized关键字修饰,那么就有可能出现,三个用户同时进入到getMoney方法里面,在A用户进入取钱程序还未完成取钱操作时,B、C两个用户也进入了取钱程序,则有可能产生错误,不安全
无synchronized关键字修饰
有synchronized关键字修饰