程序员社区

(字符串面试题)String、StringBuffer和StringBuilder区别

1、数据可变和不可变

  1. String底层使用一个不可变的字符数组private final char value[];所以它内容不可变。
  2. StringBufferStringBuilder都继承了AbstractStringBuilder底层使用的是可变字符数组:char[] value;

2、线程安全

  • StringBuilder是线程不安全的,效率较高;而StringBuffer是线程安全的,效率较低。

通过他们的append()方法来看,StringBuffer是有同步锁,而StringBuilder没有:

@Override
public synchronized StringBuffer append(Object obj) {
    toStringCache = null;
    super.append(String.valueOf(obj));
    return this;
}
@Override
public StringBuilder append(String str) {
    super.append(str);
    return this;
}

3、 相同点

StringBuilderStringBuffer有公共父类AbstractStringBuilder

最后,操作可变字符串速度:StringBuilder > StringBuffer > String,这个答案就显得不足为奇了。

Java面试题

赞(0) 打赏
未经允许不得转载:IDEA激活码 » (字符串面试题)String、StringBuffer和StringBuilder区别

一个分享Java & Python知识的社区