java中的StringStringBufferStringBuilder的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的StringStringBufferStringBuilder的区别相关的知识,希望对你有一定的参考价值。

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中的StringStringBufferStringBuilder的区别的主要内容,如果未能解决你的问题,请参考以下文章

mySQL在java中的应用

Java中的ArrayList 重要方法补充

Java中的Math函数

使用java 8中的forEach(..)而不是java 5中的forEach循环的任何优势[重复]

Java中的数据类型

java - 为啥在java中的poll方法之后PriorityQueue中的值会发生变化? [复制]