StringBuffer
- 定義:線程安全的可變字元序列——字元串可以改變
String: 定義後,内容和長度就固定了 是一個長度不可變得字元序列
往容器中增加,删除,替換,反轉内容 傳回得還是容器本身
public StringBuffer(): 無參構造方法——初始容量預設16字元
public StringBuffer(int capacity): 指定容量的字元串緩沖區對象
public StringBuffer(String str): 指定字元串内容的字元串緩沖區對象
StringBuffer的方法
public int capacity( ):傳回目前容量——理論值
public int length( ):傳回長度(字元數)——實際值
public StringBuffer append(String str): 可以把任意類型資料添加到字元串緩沖區裡面,并傳回字元串緩沖區本身
eg: StringBuffer sb = new StringBuffer();
StringBuffer ap1 = sb.append("沒有");
System.out.println(ap1);———————————— 輸出:沒有
StringBuffer ap2 = ap1.append("秘密"); //三種方法均可
System.out.println(ap2);————————————輸出:沒有秘密
System.out.println(sb1.append("的你"));————————————輸出:沒有秘密的你
StringBuffer s = sb.append(123).append(789).append("江夏").append("沒有秘密的你");————————————輸出:123789江夏沒有秘密的你
//
public StringBuffer insert(int offset,String str):在指定位置把任意類型的資料插入到字元串緩沖區裡面,并傳回字元串緩沖區本身
eg: StringBuffer sb = new StringBuffer();
sb.append("親愛的").append("熱愛的");
StringBuffer s = sb.insert(3, "韓商言");
System.out.println(s);——————————————輸出:親愛的韓商言熱愛的
public StringBuffer deleteCharAt(int index):删除指定位置的字元 并傳回本身
eg: .......
System.out.println(sb.deleteCharAt(9));——————————————輸出:親愛的韓商言熱愛
public StringBuffer delete(int start,int end):删除從指定位置開始指定位置結束的内容,并傳回本身
eg: ......
System.out.println(sb.delete(6, 8));————————————————輸出:親愛的韓商言
public StringBuffer replace(int start,int end,String str): 從start開始到end用str替換
eg: ......
System.out.println(sb.replace(3, 6,"佟年"));——————————輸出:親愛的佟年
public StringBuffer reverse(): 字元串反轉
eg: ......
System.out.println(sb.reverse());——————————————輸出:年佟的愛親
public String substring(int start):從指定位置截取到末尾
eg: ......
System.out.println(sb.reverse());
System.out.println(sb.substring(sb.indexOf("佟")));——————————輸出:佟年
public String substring(int start,int end): 截取從指定位置開始到結束位置,包括開始位置,不包括結束位置
eg: ......
System.out.println(sb.append("是個天真的小姑娘"));
System.out.println(sb.substring(sb.indexOf("佟"), sb.lastIndexOf("娘")+1));
——————————輸出:親愛的佟年是個天真的小姑娘
佟年是個天真的小姑娘
String 和 StringBuffer 的輸出
eg: String s = "我的歌詞不限于格式模式不跟着押運走——福克斯";
//String -----StringBuffer
System.out.println(new StringBuffer(s));
System.out.println(new StringBuffer().append(s));
//StringBuffer----String
String s1 = new String("HeyKong Can You Hear Me");
System.out.println(new String(s1));
System.out.println(s1.toString());
System.out.println(s1.substring(0));
StringBuilder
- 定義:一個可變的字元序列。用在字元串緩沖區被單個線程使用的時候———比StringBuffer效率高
StringBuilder和String的差別
eg:public static void main(String[] args) {
String s = "hello";
test(s);
System.out.println(s);———————————— 輸出:hello
StringBuilder sb = new StringBuilder(s);
test(sb);
System.out.println(sb);———————————— 輸出:helloWorld !
}
private static void test(String s){ //不改變字元串
s = s+"world" ;
System.out.println(s);———————————— 輸出:helloworld
}
private static void test(StringBuilder s) { // 改變字元串
System.out.println(s);
s.append("World !");———————————— 輸出:helloWorld !
}