JAVA常用类StringBuffer

简单概述

  • StringBuffer:线程安全的,如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer。
  • Java.lang.StringBuffer是线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。
  • StringBuffer类的直接父类是AbstractStringBuilder。
  • 实现了Serializable,即StringBuffer的对象可以串行化。
  • AbstractStringBuilder父类中 属性 char[] value 不是final 类型。
  • 该value数组存放字符串内容,存放在堆中。

构造方法


String和StringBuffer区别


  • String 是不可变的对象, 因此在每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别是当内存中无引用对象多了以后,JVM 的 GC 就会开始工作,性能就会降低。
  • 使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象的引用。所以大多数情况下推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。
  • StringBuffer保存字符串的时候,不用每次都更新地址,如果地址的空间大小够的话,新增的数据就直接放在后面,地址空间不改边。只有空间不够的时候,才会重新扩容,然后改变新的地址

使用原则

  • 如果要操作少量的数据,用String
  • 单线程操作大量数据,用StringBuilder
  • 多线程操作大量数据,用StringBuffer
  • 不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类

String和StringBuffer的相互转化

class StringAndStringBuffer {    public static void main(String[] args) {        //String 转 StringBuffer        String str="hello java";        //方式1:使用构造器        StringBuffer stringBuffer = new StringBuffer(str);        //方式2:使用StringBuffer的append方法        StringBuffer stringBuffer1 = new StringBuffer();        stringBuffer1=stringBuffer1.append(str);        //StringBuffer转String        StringBuffer stringBuffer2 = new StringBuffer("hello lxw");        //方式1:使用StringBuffer的toString()方法        String s = stringBuffer2.toString();        //方式2:使用构造器来完成        String s1 = new String(stringBuffer2);    }}
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章