——- 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(,"23");
System.out.println(sb.toString());
}
//2 删除
public static void delete()
{
StringBuffer sb = new StringBuffer("abcd123efgh");
sb.delete(,);
System.out.println(sb.toString());//結果abcdefgh.删除包含頭不包含尾
sb.deleteCharAt();
System.out.println(sb.toString());//結果abcdefg
sb.delete(,sb.length());//sb被清空了,結果為空串
}
//3 修改
public static void update()
{
StringBuffer sb = new StringBuffer("abcdefgh");
sb.replace(,,"Hello java");
System.out.println(sb.toString());//結果Hello javadefgh
sb.setCharAt(,'h');
System.out.println(sb.toString());//結果hello javadefgh
//4 反轉
sb.reverse();
System.out.println(sb.toString());//結果hgfedavaj olleh
//5 将緩沖區中指定資料存儲到指定字元數組的指定位置中
char[] ch = new char[];
sb.getChars(,,ch,);
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[];
sb.getChars(,,chs,);//将
for(int x=; x<chs.length; x++)
{
sop("chs["+x+"]="+chs[x]+";");
}
draw(,);
draw(,);
// 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(,'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();
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(,"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=; x<row; x++)
{
for(int y=; y<col; y++)
{
sb.append("*");
}
sb.append("\r\n");
}
sop(sb.toString());
}
}
StringBuilder
JDK1.5 版本之後出現了StringBuilder.
StringBuffer是線程同步。
StringBuilder是線程不同步。
以後開發,建議使用StringBuilder
更新三個因素:
1,提高效率。
2,簡化書寫。
3,提高安全性。