标签:string与stringbuffer的 string与stringbuilder stringbuffer与stringb
StringBuffer类详解
· java.lang.Object
· java.lang.StringBuffer
· All Implemented Interfaces:
Serializable, Appendable, CharSequence
public final class StringBuffer
extends Object
implements Serializable, CharSequence
一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
StringBuffer 上的主要操作是append 和insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而insert 方法则在指定的点添加字符。
每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
Public Constructors |
|
StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 |
|
StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。 |
|
StringBuffer(String string) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 |
|
StringBuffer(CharSequence cs) 构造一个字符串缓冲区,它包含与指定的 CharSequence相同的字符。 |
Public Methods |
|
StringBuffer |
append(double d)
将 |
StringBuffer |
append(boolean b)
将 |
StringBuffer |
append(long l)
将 |
StringBuffer |
append(float f)
将 |
StringBuffer |
append(int i)
将 |
StringBuffer |
appendCodePoint(int codePoint)
将 |
int |
capacity() 返回当前容量。 |
StringBuffer |
delete(int start, int end) 移除此序列的子字符串中的字符。 |
StringBuffer |
deleteCharAt(int index)
移除此序列指定位置的 |
int |
indexOf(String string) 返回第一次出现的指定子字符串在该字符串中的索引。 |
StringBuffer |
insert(int index, int i)
将 |
StringBuffer |
insert(int index, double d)
将 |
StringBuffer |
insert(int index, long l) 将 long参数的字符串表示形式插入此序列中。 |
StringBuffer |
insert(int index, Object obj)
将 |
StringBuffer |
insert(int index, float f)
将 |
StringBuffer |
insert(int index, boolean b) 将 boolean参数的字符串表示形式插入此序列中。 |
int |
lastIndexOf(String string) 返回最右边出现的指定子字符串在此字符串中的索引。 |
int |
length() 返回长度(字符数)。 |
StringBuffer |
replace(int start,
int end,
使用给定 |
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
StringBuilder和StringBuffer类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。
一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。
总结:
1) 如果要操作少量的数据用String
2) 单线程操作字符串缓冲区下操作大量数据用 StringBuilder
3) 多线程操作字符串缓冲区下操作大量数据用StringBuffer
StringBuffer类详解(String、StringBuffer、StringBuilder的区别)
标签:string与stringbuffer的 string与stringbuilder stringbuffer与stringb
原文地址:http://blog.csdn.net/fengyuzhengfan/article/details/38942591