一、String
String由于是不可变类,所以线程安全。
二、StringBuffer以及StringBuilder
先看StringBuffer和StringBuilder的关系图:
image.png
StringBuffer和StringBuilder都是继承AbstractStringBuilder类,AbstractStringBuilder已经实现了大量通用方法:
image.png
对比StringBuilder的append方法已经StringBuffer的append方法:
@Override
public StringBuilder append(CharSequence s, int start, int end) {
super.append(s, start, end);
return this;
}
@Override
public synchronized StringBuffer append(CharSequence s, int start, int end)
{
toStringCache = null;
super.append(s, start, end);
return this;
}
区别只是一个在方法前加了synchronized,一个没有,所以StringBuffer是线程安全,StringBuilder是线程非安全。
网友评论