StringBuffer是字符缓冲区。是一个容器。
特点:
1.而且长度是可变化的
2,可以直接操作多个数据类型。
3.最终通过toString方法变成字符串
C:create U:update R:read D:delete
1,存储
StringBuffer append():将制定数据作为参数添加到已有数据结尾处
StringBuffer insert():可以将数据插入到制定index位置
2.删除
StringBuffer delete(start,end):删除缓冲区的数据,包含start,不包含end
StringBuffer deleteCharAt(index):删除指定位置的字符
3.获取
char charAt();
int indexOf(String str);
int lastIndexOf(String str);
int length();
String substring(int start,int end)
4.修改
StringBuffer replace(int start, int end, String str);
void setCharAt(int index,char ch);
5.反转
StringBuffer reverse();
6. 将缓冲区中指定数据存储到指定字符数组中
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
7.JDk1.5版本之后出现了StringBuilder
StringBuffer是线程同步。安全。判断锁
StringBuilder是线程不同步。不安全。不需要判断锁。
以后开发建议使用StringBuider,就是在创建对象的时候,其他方法都不变
StringBuilder sb = new StringBuilder("abcdef");
升级三个因素:1.提高效率、简化书写、提高安全性
class StringBufferDemo
{
public static void main(String args[])
{
method_6();
}
public static void method_6()
{
StringBuffer sb = new StringBuffer("abced");
char[] chs = new char[6];
sb.getChars(1,4,chs,2);//将bce存储到字符数组,且从数组2角标开始存
for(int x=0;x<chs.length;x++)
{
sop("ch["+x+"]="+chs[x]+";");
}
}
public static void method_update()
{
StringBuffer sb = new StringBuffer("abcde");
//sb.replace(2,4,"java");//abjavae
sb.setCharAt(2,'k');//abkde
sop(sb.toString());
}
public static void method_del()
{
StringBuffer sb = new StringBuffer("abcde");
//sb.delete(1,3);//bc被删除了,结果是ade
//清空缓冲区
//sb.delete(0,sb.length());
sb.deleteCharAt(2);//删除c
sop(sb.toString());
}
public static void method_add()
{
//StringBuffer sb = new StringBuffer();
//sb.append("abc").append(tr);//StringBuffer sb1 = sb.append(34);
//sop("sb==sb1:"+(sb==sb1));//结果是true
//sb.insert(1,"qq");//结果是aqqbcture3,1第一个q的角标
//sop(sb.toString);//结果是abcture34
//sop(sb1.toString);
}
public static void sop(String str)
{
System.out.println(str);
}
}
网友评论