欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中StringBuffer和StringBuilder区别

程序员文章站 2024-03-05 08:43:00
早先用java的时候,知道有个类叫stringbuffer,用来拼接较长的字符串。转到c#之后,也有一个似类功能的类叫作stringbuilder,简写都是sb,非常好记。...

早先用java的时候,知道有个类叫stringbuffer,用来拼接较长的字符串。转到c#之后,也有一个似类功能的类叫作stringbuilder,简写都是sb,非常好记。

再后来转移回java的时候,发现java也有了stringbuilder,于是就好奇了一下为什么在stringbuffer之后又推出了stringbuilder。

原来java的stringbuilder(和c#一样)是非线程安全的,而早先的stringbuffer具有一定的线程安全属性。当然,推出stringbuilder,主要也是因为它没有必要在多线程的情况下使用。

常见的stringbuilder(或者stringbuffer)的用例是:

public string tostring() {
 return new stringbuilder()
  .append("name: " + name)
  .append("foo: " + foo)
  .append("bar: " + bar)
  .tostring();
}

在这种情况下,stringbuilder都不是一个类成员,它只是一个局部变量,根本谈不上多线程的问题。

于是,stringbuilder的引入带来了非常大的性能提升,而且一点安全问题也没有……