講在前面
- 如果要對字符串進(jìn)行頻繁的修改饼问,應(yīng)采用StringBuilder或StringBuffer類
- 兩者不同體現(xiàn)在StringBuffer類是線程安全的影兽,StringBuilder不是
- 線程安全是有成本的,影響性能匆瓜,字符串對象及操作大部分情況下不存在線程安全問題赢笨,適合使用StringBuilder類
public static void main(String args[]){
//基本用法
StringBuilder sb = new StringBuilder();
//通過append方法添加字符串
sb.append("周末也要學(xué)習(xí)");
sb.append("未蝌,提升只爭朝夕");
//通過toString方法獲取構(gòu)建后的字符串
System.out.println(sb.toString());
//String可以直接使用+和+=運算符驮吱,java編譯器一般會生成StringBuilder,+和+=操作會轉(zhuǎn)換為append,例如
String hello = "hello";
//這里會轉(zhuǎn)換為 StringBuilder hello = new StringBuilder("hello")
hello += ",world";
//這里會轉(zhuǎn)換為 hello.append(",world")
System.out.println(hello);
//這里會轉(zhuǎn)換為 System.out.println(hello.toString());
//簡單情況下可以直接使用String的+和+=萧吠,但對于復(fù)雜情況左冬,尤其是有循環(huán)的時候,應(yīng)該直接使用StringBuilder纸型,例如
String hi = "hello";
for(int i=0; i<3; i++){
hi += ",world";
//這里相當(dāng)于:
//StringBuilder sb = new StringBuilder(hi);
//sb.append(", world");
//hi = sb.toString();
//在for循環(huán)中會生成過多的StringBuilder
}
System.out.println(hi);
//重新寫一下
StringBuilder hi_again = new StringBuilder("一定要多多");
for(int j=0; j<3; j++){
hi_again.append("練習(xí)");
}
System.out.println(hi_again.toString());
}