《Java-直击现场》StringBuffer和StringBuilder以及String区别

95 阅读1分钟

String:

String类在Java源码中使用的是 final修饰的char数组组成的字符串(private final char value[];)因此是String不可变对象线程安全

StringBuffer类

StringBuffer类继承AbstractStringBuilder类,而AbstractStringBuilder类中使用的是char数组保存字符串 (char[] value;)因此StringBuffer是可变对象,又因为其方法加入了同步锁synchronized,因此StringBuffer是线程安全的

StringBuilder类

StringBuilder类也继承AbstractStringBuilder类,而AbstractStringBuilder类中使用的是char数组保存字符串 (char[] value;)因此StringBuilder****是可变对象,又因为其方法没有同步锁,因此StringBuilder是线程不安全的

使用场景:

1、操作少量数据时:使用String

2、单线程下操作大量数据:StringBuilder

3、多线程下操作大量数据:StringBuffer