StringBuffer是字符串缓冲区,是一个容器。
特点:
1:可以对字符串内容进行修改
2:是一个容器。
3:是可变长度的。
4:缓冲区中可以存储任意类型的数据。
5:最终需要变成字符串。
而容器通常具备一些固定的方法:
1.增 2.删 3.改 4.查
create delete update read
简称:CURD
StringBuffer字符串缓冲区一些常见的方法:
1.存储:
* StringBuffer append(data); 将指定的数据作为参数添加到已有数据的结尾处。返回值为StringBuffer类型。
* StringBuffer insert(offset, 任意类型数据); 可以将指定数据插入到offset角标前面。返回值为StringBuffer类型。
*
* 2.删除:
* StringBuffer delete(int start, int end);删除缓冲区中的数据,包含start,不包含end。
* StringBuffer deleteCharAt(int index); 删除指定位置的字符。
*
* 3.获取:
* char charAt(int index) //获取指定位置index的字符。
* int indexOf(String str) //获取指定字符串的索引。
* int lastIndexOf(String str) //反向获取指定字符串的索引
* int length() //获取字符串长度
* String substring(int start) //截取字符串,从start位置开始。
*
* 4.修改。
* StringBuffer replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。
* void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch。
*
* 5.反转。
* StringBuffer reverse(); 将此字符序列用其反转形式取代。
*
* 将缓冲区中指定数据存储到指定字符数组中。
* 6.void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
*
* JDK1.5版本之后出现了StringBuilder和StringBuffer功能一模一样。
* 不同之处在于,StringBuffer是线程同步的。StringBuilder不是线程同步的。
* 以后开发建议使用StringBuilder。
方法和StringBuffer一样。
StringBuffer 和 StringBuilder 的区别:
StringBuffer线程安全。
StringBuilder线程不安全。
单线程操作,使用StringBuilder效率高。
多线程操作,使用StringBuffer安全。
代码示例:
//字符串缓冲区演示类
public class StringBufferDemo
{
public static void main(String[] args)
{
//调用添加方法
methodAdd();
//调用删除方法
methodDelete();
//调用修改方法
methodUpdate();
//创建一个字符串缓冲区对象,初始化缓冲区的内容为 "adbjk"
StringBuffer s = new StringBuffer("adbjk");
//创建一个字符数组
char[] c = new char[19];
//将字符串缓冲区中从0到s.length()-1的字符,存入字符数组c中,从字符数组的1角标开始
s.getChars(0, s.length(), c, 1);
//迭代字符数组c中的每个元素
for (int x = 0; x < c.length; x++)
print("c["+x+"]="+c[x]);
}
//字符串缓冲区的添加方法
public static void methodAdd()
{
//定义一个字符串缓冲区s
StringBuffer s = new StringBuffer();
//往字符串缓冲区中添加一系列的元素
s.append("qawsed").append(true).append(678).insert(3, "kk"); //方法调用链
//打印字符串缓冲区中的元素
print(s.toString());
}
//字符串缓冲区中的删除方法
public static void methodDelete()
{
//创建一个字符串缓冲区s
StringBuffer s = new StringBuffer("abcdefg");
//删除指定位置的字符
s.deleteCharAt(2);
//清空缓冲区。
//s.delete(0, s.length());
print(s.toString());
}
//字符串缓冲区的修改方法
public static void methodUpdate()
{
//创建一个字符串
StringBuffer s = new StringBuffer("abcdefg");
//将缓冲区中从索引1(包含)开始到索引3(不包含)位置替换成 "java"
//s.replace(1, 3, "java");
//将指定索引位置3的字符设置为 'k'
s.setCharAt(3, 'k');
//打印缓冲区中的元素
print(s.toString());
}
//为了方便打印,定义的打印功能
public static void print(String str)
{
System.out.println(str);
}
}