是一个容器。
特点:
1,长度是可变化的。
2,可以直接操作多个数据类型。
3,最终会通过toString方法变成字符串。
1,添加插入。
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2,删除。
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。
3,获取。
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
4,修改。
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
5,反转。
StringBuffer reverse();
6,
将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
JDK1.5 版本之后出现了StringBuilder.
StringBuffer是线程同步。
StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
升级三个因素:
1,提高效率。
2,简化书写。
3,提高安全性。
测试:
class StringBufferDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void StringBuffer_add()
{
StringBuffer sb=new StringBuffer("abc");
sb.append("def"+true+123); //abcdeftrue123
sop(sb);//sop(sb.toString());
sb.insert(1,"JAVA"); //aJAVAbcdeftrue123
sop(sb);
}
public static void StringBuffer_del()
{
StringBuffer sb=new StringBuffer("abcef");
sb.delete(1,2);//acef 包含头不包含尾
sop(sb);
sb.deleteCharAt(2); //acf
sop(sb);
}
public static void StringBuffer_get()
{
StringBuffer sb=new StringBuffer("abcdecf");
sop(sb.charAt(2)); //c
sop(sb.indexOf("c")); //2
sop(sb.lastIndexOf("c")); //5
}
public static void StringBuffer_updata()
{
StringBuffer sb =new StringBuffer("abcdef");
sb.replace(2,4,"Java"); //abJavaef
sop(sb);
String s=sb.substring(2,6); //Java
sop(s);
//将缓冲区中指定数据存储到指定字符数组中。
//void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
char[] arr =new char[5];
StringBuffer sb1=new StringBuffer("abcd");
sb1.getChars(0,3,arr,1);
for(int x=0;x<5;x++)
sop(arr[x]);
}
public static void main(String[] args)
{
StringBuffer_updata();
}
}