String和stringbuffer、stringbuilder的区别

从执行速度与线程安全两个方面看:

String类型的变量是作为字符常量存储,后两者是作为字符变量存储。也就是String对象是不可变的。

所以,当字符串不进行大量操作的时候String对象的执行速度是最快的。

当需要对字符串进行修改操作的时候,Sting是最慢的。

总体执行速度(对字符串进行修改操作的时候):

StringBuilder > StringBuffer > String

线程安全:

String由于对象不可变,所以不存在多线程不安全的问题。

StringBuilder  是线程不安全的。源码:

@Override
public StringBuilder append(boolean b) {
    super.append(b);
    return this;
}

StringBuffer 是线程安全的。源码:

@Override
synchronized StringBuffer append(AbstractStringBuilder asb) {
    toStringCache = null;
    super.append(asb);
    return this;
}

猜你喜欢

转载自blog.csdn.net/qq_38572383/article/details/82722348
今日推荐