首页 > 代码库 > java中的String、StringBuffer、StringBuilder的区别

java中的String、StringBuffer、StringBuilder的区别

String、StringBuffer、StringBuilder都是java中的常用字符串类 ,下面来看看三者之间的异同。

 一、可变与不可变:

      String:字符串常量,不可变。StringBuffer、StringBuilder为可变字符序列,是可变的。

 二、是否多线程安全:

  String中的对象是不可变的,相当于常量,显然线程安全

  StringBuffer:支持多线程安全。

  StringBuilder:不支持多线程安全

  

 三、执行效率:

  String、StringBuffer、StringBuilder用于字符串拼接:String str1="asdfgh";   String str2="lkjhdsa";

  方法一、

    使用String:String str3=str1+str2;  效率最低

  方法二、

    使用StringBuffer::str1.append(str2); //使用StringBuiffer的append()方法进行追加。  效率较高(由于其需要实现线程安全,故效率比StringBuilder低。)

  方法三、

    使用StringBuilder:str1.append(str2); //使用StringBuilder的append()方法进行追加。  效率最高 。(不用考虑线程安全问题,故执行效率最高)

 

 总结:

    一、如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder ;多线程操作大量数据,用StringBuffer。

    二、不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类。

 

 

 注:StringBuilder和StringBuffer都具有如下方法显示对字符串的增、删、改、查功能。

  增:insert();

  删:delete();

  改:replace();

  查:indexOf();

  其具体用法可以参考java API文档。

java中的String、StringBuffer、StringBuilder的区别