String、StringBuffer和StringBuilder
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:MyEclipse
作者:李成富
撰写时间:2019.04.12
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当对字符串进行修改时,需要使用StringBuffer类和StringBuilder类。
StringBuffer和StringBuilder类的相同之处:
- 主要操作是
append
和insert
方法,可重载这些方法,以接受任意类型的数据 - StringBuffer和StringBuilder类是可以通过append()、insert()、reverse()....等方法 来修改值。创建的对象是可变
3、每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器(缓冲区)中
3
、append
方法始终将这些字符添加到生成器的末端;而 insert
方法则在指定的点添加字符。
4、每个字符串生成器(缓冲区)都有一定的容量。只要字符串生成器(缓冲区)所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区(缓冲区数组)。如果内部缓冲区溢出,则此容量自动增大。
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 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。