——- android培训、java培训、期待与您交流! ———-
StringBuffer
StringBuffer是字符串缓冲区。
是一个容器。
特点:
1,长度是可变化的。
2,可以直接操作多个数据类型。
3,最终会通过toString方法变成字符串。
C create U update R read D delete
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)
测试:
class StringBufferDemo
{
public static void main(String[] args)
{
//add();
//delete();
update();
}
//1 存储
public static void add()
{
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append("abcdefg");
System.out.println(sb.toString());
System.out.println(sb==sb1);//true
sb.insert(1,"23");
System.out.println(sb.toString());
}
//2 删除
public static void delete()
{
StringBuffer sb = new StringBuffer("abcd123efgh");
sb.delete(4,7);
System.out.println(sb.toString());//结果abcdefgh.删除包含头不包含尾
sb.deleteCharAt(7);
System.out.println(sb.toString());//结果abcdefg
sb.delete(0,sb.length());//sb被清空了,结果为空串
}
//3 修改
public static void update()
{
StringBuffer sb = new StringBuffer("abcdefgh");
sb.replace(0,3,"Hello java");
System.out.println(sb.toString());//结果Hello javadefgh
sb.setCharAt(0,'h');
System.out.println(sb.toString());//结果hello javadefgh
//4 反转
sb.reverse();
System.out.println(sb.toString());//结果hgfedavaj olleh
//5 将缓冲区中指定数据存储到指定字符数组的指定位置中
char[] ch = new char[7];
sb.getChars(0,5,ch,0);
System.out.println(new String(ch));//运行结果hgfed
}
}
class StringBufferDemo
{
public static void main(String[] args)
{
//method_update();
StringBuilder sb = new StringBuilder("abcdef");
char[] chs = new char[6];
sb.getChars(1,4,chs,1);//将
for(int x=0; x<chs.length; x++)
{
sop("chs["+x+"]="+chs[x]+";");
}
draw(3,6);
draw(8,9);
// StringBuilder sb1 = new StringBuilder();
// sb1.append(new Demo()).append(new Demo());
// sop("sb1="+sb1);
}
public static void method_update()
{
StringBuffer sb = new StringBuffer("abcde");
// sb.replace(1,4,"java");
sb.setCharAt(2,'k');
sop(sb.toString());
}
public static void method_del()
{
StringBuffer sb = new StringBuffer("abcde");
// sb.delete(1,3);
//清空缓冲区。
//sb.delete(0,sb.length());
//sb.delete(2,3);
sb.deleteCharAt(2);
sop(sb.toString());
}
public static void method_add()
{
StringBuffer sb = new StringBuffer();
//sb.append("abc").append(true).append(34);
// StringBuffer sb1 = sb.append(34);
// sop("sb==sb1:"+(sb==sb1));
sb.insert(1,"qq");
sop(sb.toString());//abctrue34
//sop(sb1.toString());
}
public static void sop(String str)
{
System.out.println(str);
}
public static void draw(int row,int col)
{
StringBuilder sb = new StringBuilder();
for(int x=0; x<row; x++)
{
for(int y=0; y<col; y++)
{
sb.append("*");
}
sb.append("\r\n");
}
sop(sb.toString());
}
}
StringBuilder
JDK1.5 版本之后出现了StringBuilder.
StringBuffer是线程同步。
StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
升级三个因素:
1,提高效率。
2,简化书写。
3,提高安全性。