1. 9IM首页
  2. 热点

String,StringBuffer和StringBuilder之间的区别

1.可变性

String是一个不可变类,任何对String改变都是会产生一个新的String对象,所以String类是使用final来进行修饰的。而StringBuffer和StringBuilder是可变类,对应的字符串的改变不会产生新的对象。

2.执行效率

当频繁对字符串进行修改时,使用String会生成一些临时对象,多一些附加操作,执行效率降低。

stringA = StringA + "2";
//实际上等价于
{
  StringBuffer buffer = new StringBuffer(stringA)
  buffer.append("2");
  return buffer.toString();
}

在对stringA进行修改时,实际上是先根据字符串创建一个StringBuffer对象,然后调用append()方法对字符串修改,再调用toString()返回一个字符串。

3.线程安全

StringBuffer的读写方法都使用了synchronized修饰,同一时间只有一个线程进行操作,所以是线程安全的,而StringBuilder不是线程安全的。

原创文章,作者:9IM,如若转载,请注明出处:https://www.9im.cn/453.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注