StringBuffer
线程安全,可变的字符序列。 字符串缓冲区就像一个String ,但可以修改。 在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。
字符串缓冲区可以安全地被多个线程使用。 这些方法在必要时进行同步,以便任何特定实例上的所有操作都按照与所涉及的各个线程所执行的方法调用顺序一致的顺序发生。
这是属于它的构造方法
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。
StringBuffer(CharSequence seq) 构造一个包含与指定的相同字符的字符串缓冲区 CharSequence 。
StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
StringBuilder
一个可变的字符序列。 此类提供与StringBuffer的API,但不保证同步。 此类设计用作简易替换为StringBuffer在正在使用由单个线程字符串缓冲区的地方(如通常是这种情况)。 在可能的情况下,建议使用这个类别优先于StringBuffer ,因为它在大多数实现中将更快。
StringBuilder的主要StringBuilder是append和insert方法,它们是重载的,以便接受任何类型的数据。 每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入字符串构建器。 append方法始终在构建器的末尾添加这些字符; insert方法将insert添加到指定点。
这是属于它的构造方法
StringBuilder()
构造一个没有字符的字符串构建器,初始容量为16个字符。
StringBuilder(CharSequence seq)
构造一个包含与指定的相同字符的字符串构建器 CharSequence 。
StringBuilder(int capacity)
构造一个没有字符的字符串构建器,由 capacity参数指定的初始容量。
StringBuilder(String str)
构造一个初始化为指定字符串内容的字符串构建器。
属于他们的方法其实大多数都是相同的:
StringBuffer append(boolean b)
将 boolean参数的字符串表示附加到序列中。
StringBuffer append(char c)
将 char参数的字符串表示附加到此序列。
StringBuffer append(char[] str)
将 char数组参数的字符串表示附加到此序列。
StringBuffer append(char[] str, int offset, int len)
将 char数组参数的子阵列的字符串表示附加到此序列。
StringBuffer append(CharSequence s)
追加指定的 CharSequence到这个序列。
StringBuffer append(CharSequence s, int start, int end)
追加指定的序列 CharSequence到这个序列。
StringBuffer append(double d)
将 double参数的字符串表示附加到此序列。
StringBuffer append(float f)
将 float参数的字符串表示附加到此序列。
StringBuffer append(int i)
将 int参数的字符串表示附加到此序列。
StringBuffer append(long lng)
将 long参数的字符串表示附加到此序列。
StringBuffer append(Object obj)
追加 Object参数的字符串表示。
StringBuffer append(String str)
将指定的字符串附加到此字符序列。
StringBuffer append(StringBuffer sb)
将指定 StringBuffer这个序列。
StringBuffer appendCodePoint(int codePoint)
将 codePoint参数的字符串表示法附加到此序列。
这些都是通过这个方法将不同类型的数据添加到字符串中,对于他们两个类来说都是一样的
有增加的方法也同样会有删除的方法
StringBuffer delete(int start, int end)
删除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index)
删除 char在这个序列中的指定位置。
都是属于他们的返回地址索引的方法
int indexOf(String str)
返回指定子字符串第一次出现的字符串内的索引。
int indexOf(String str, int fromIndex)
返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。
也有属于他们插入的方法
insert(int offset, boolean b)
在此序列中插入 boolean参数的字符串表示形式。
StringBuffer insert(int offset, char c)
在此序列中插入 char参数的字符串表示形式。
StringBuffer insert(int offset, char[] str)
在此序列中插入 char数组参数的字符串表示形式。
StringBuffer insert(int index, char[] str, int offset, int len)
在此序列中插入 str数组参数的子阵列的字符串表示形式。
StringBuffer insert(int dstOffset, CharSequence s)
将指定的 CharSequence这个序列。
StringBuffer insert(int dstOffset, CharSequence s, int start, int end)
将指定的子序列 CharSequence这个序列。
StringBuffer insert(int offset, double d)
在此序列中插入 double参数的字符串表示形式。
StringBuffer insert(int offset, float f)
在此序列中插入 float参数的字符串表示形式。
StringBuffer insert(int offset, int i)
将第二个 int参数的字符串表示插入到此序列中。
StringBuffer insert(int offset, long l)
在此序列中插入 long参数的字符串表示形式。
StringBuffer insert(int offset, Object obj)
将 Object参数的字符串表示插入到此字符序列中。
StringBuffer insert(int offset, String str)
将字符串插入到此字符序列中。
总结:
StringBuffer和StringBuilder是Java中用于处理可变字符串的类。它们的功能和用法非常相似,但有一些重要的区别。
StringBuffer是线程安全的,适用于多线程环境下的字符串操作。它的方法都是同步的,保证了线程安全,但也导致了一定的性能损失。因此,如果在单线程环境下使用,性能可能不如StringBuilder。
StringBuilder是非线程安全的,适用于单线程环境下的字符串操作。它的方法都是非同步的,因此在性能上比StringBuffer更高效。如果在单线程环境下进行字符串操作,建议使用StringBuilder。
这两个类都提供了类似于String类的方法,如append()用于字符串的拼接,insert()用于在指定位置插入字符串,delete()用于删除指定范围内的字符等。
总而言之,如果在多线程环境下需要进行字符串操作,应使用StringBuffer。如果在单线程环境下需要进行字符串操作,并且对性能要求较高,应使用StringBuilder。