String、StringBuffer和StringBuilder

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:MyEclipse

作者:李成富

撰写时间:2019.04.12

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

StringBuffer和StringBuilder类的相同之处:

  1. 主要操作是 appendinsert 方法,可重载这些方法,以接受任意类型的数据
  2. StringBuffer和StringBuilder类是可以通过append()、insert()、reverse()....等方法 来修改值。创建的对象是可变

3、每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器(缓冲区)中

3、append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。

4、每个字符串生成器(缓冲区)都有一定的容量。只要字符串生成器(缓冲区)所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区(缓冲区数组)。如果内部缓冲区溢出,则此容量自动增大。

 

String、StringBuffer和StringBuilder

 

StringBuffer和StringBuilder类的不同之处:

1、它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问)。StringBuffer:线程安全的; StringBuilder:线程非安全的

2、字符串连接 String 的 + 比 StringBuffer(StringBuilder) 的 Append() 性能差了很多

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

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

5、通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。