您的位置:首页 > 产品设计 > UI/UE

String,StringBuffer,StringBuilder区别是什么?

2018-03-09 17:12 453 查看
可变性

String 不可变,是由定义final的字符数组实现的

/* The value is used for character storage. /

private final char value[];

StringBuffer、StringBuilder均可变,是由定义了临时数据transient的字符数组实现的

/**

* A cache of the last value returned by toString. Cleared

* whenever the StringBuffer is modified.

*/

private transient char[] toStringCache;

是否线程安全

String 对象不可变,即不可变对象永远是线程安全的

StringBuffer对方法加了同步锁synchronized,所以是线程安全的,比如获取其长度

@Override

public synchronized int length() {

return count;

}

StringBuilder并没有对方法加同步锁synchronized,所以是非线程安全的,比如添加字符

@Override

public StringBuilder append(String str) {

super.append(str);

return this;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息