String ,StringBuffer 和StringBuilder的区别

String类

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。

String是final类,字符串会放在堆空间,创建新字符串也需要消耗性能,也会增加jvm的gc次数

 

StringBuffer 和 StringBuilder

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

 

1. 在执行速度方面的比较:baiStringBuilder > StringBuffer

2.StringBuilder:线程非安全的

  StringBuffer:线程安全的

 

对于三者使用的总结

       1.如果要操作少量的数据用 = String
       2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
       3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

 

posted @ 2020-09-01 22:35  Jeessu  阅读(125)  评论(0编辑  收藏  举报