1、StringBuffer类
StringBuffer用于表示可以修改的字符串。只要将连接运算符(+)与字符串一起使用,就会自动创建StringBuffer对象。
StringBuffer类的构造方法:
构造方法 | 说明 |
---|---|
public StringBuffer() | 保留16个字符的空间。 |
public StringBuffer(int capacity) | 设置缓存器大小。 |
public StringBuffer(String str) | 接收字符串参数,用来设置初始内容,并在不重新分配的情况下保留16个字符的空间。 |
StringBuffer类的常用方法:
方法 | 说明 |
---|---|
StringBuffer append(content) | 该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可以实现接受任何类型的数据,如 int、boolean、char、String、double或者另一个StringBuffer等。 |
StringBuffer insert(int offset, String str) | 在指定位置插入字符串表示。 |
int length() | 返回 StringBuffer 对象的长度。 |
void setCharAt(int index, char ch) | 使用 ch 指定的新值设置 index 指定的位置上的字符。 |
String toString() | 转换为 String 类型。 |
StringBuffer reverse() | StringBuffer 对象中的字符序列倒排序。 |
StringBuffer delete(int start, int end) | 此方法将删除调用对象中从 start 指定的位置开始直到 end 指定的位置结束。 |
StringBuffer deleteCharAt(int index) | 此方法将删除 index 指定的索引处的字符。 |
StringBuffer replace(int start, int end, String str) | 此方法使用一组字符替换另一组字符。将用替代字符串从 start 指定的位置开始替换,直到 end 指定的位置结束。 |
2、使用StringBuffer拼接字符串
在拼接字符串过程中,使用StringBuffer对象,而不使用String对象。这是因为String是不可变的对象,在每一次改变字符串时都会创建一个新的String对象;而StringBuffer则是可变的字符序列,类似于String的字符串缓冲区。所以,在字符串经常修改的地方使用StringBuffer,其效率将高于String。
在这方面运行速度快慢为:StringBuilder > StringBuffer > String。
线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。
示例:使用StringBuffer拼接字符串。
/**
* 将数组转换成为字符串
*
* @param arr 字符串数组
* @param symbol 连接符号
* @return 字符串
* @author pan_junbiao
*/
public static String arrToStr(String[] arr, String symbol)
{
// 实例化StringBuffer
StringBuffer sb = new StringBuffer();
// 判断arr是否为有效数组
if (arr != null && arr.length > 0)
{
// 遍历数组
for (String s : arr)
{
// 将字符串追加到StringBuffer中
sb.append(s);
// 将字符串追加到StringBuffer中
sb.append(symbol);
}
// 判断字符串长度是否有效
if (sb.length() > 0)
{
// 截取字符
sb = sb.deleteCharAt(sb.length() - 1);
}
}
// 返回字符串
return sb.toString();
}
调用代码:
public static void main(String[] args)
{
String[] arr = {"吖标", "pan_junbiao", "pan_junbiao的博客"};
String str = arrToStr(arr, ";");
System.out.println(str);
}
执行结果: