面试必问系列:4、String、StringBuffer和StringBuilder的区别

思路: 共同点、不同点、运行效率 ,线程安全,使用场景

1、String、StringBuffer、StringBuilder类都是final修饰的,不可被继承。

2、String是不可变的,底层是final类型修饰的数组,拼接时会创建新的字符串;

而StringBuffer和StringBuilder都继承自AbstractStringBuilder,是可变的,append追加的方式,节约常量池空间。

3、StringBuilder > StringBuffer > String

4、StringBuffer方法由sychronized修饰,是线程安全的;StringBuilder不是线程安全的。

补充:String底层是不可变的,所以也是线程安全的。

5、String: 少量的字符串操作场景

     StringBuffer:多线程下在字符串缓冲区进行大量操作

     StringBuilder:单线程下在字符串缓冲区进行大量操作

你可能感兴趣的:(java基础部分)