MENU

Java关于String、StringBuffer、StringBuilder区别

  • 都是final类,都不允许被继承
  • String类长度是不可变的,StringBuffer和StringBuilder类长度是可以改变的
  • StringBuffer类是线程安全的,StringBuilder不是线程安全的
  • String的不可变因素,因此它是线程安全的,而StringBuffer内部采用synchronized 进行同步,因此它也是线程安全的。

String

String是不可变的对象,因此每次在对String类进行改变的时候都会生成一个新的String对象,然后将指针指向新的string对象,所以经常要改变字符串长度的不要使用String,因为每次生成对象都会对系统性能产生影响,特别是当内存中引用的对象多了以后,JVM的GC开始工作,性能降低。

StringBuffer

StringBuffer类时,每次都会对StringBuffer对象进行操作,而不是生成新的对象并改变对象引用,所以多数情况下推荐使用StringBuffer。特别是字符串对象经常要改变的情况。

StringBuilder

StringBuilder设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用。

使用的基本原则

操作少量的数据则用String;
单线程操作大量数据则用StringBuilder;
多线程操作大量数据则用StringBuffer;

参考文章String, StringBuffer, and StringBuilder

标签: Java
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码