廖雪峰Java2面向對象編程-6Java核心類-1StringBuilder
阿新 • • 發佈:2019-01-20
面向對象編程 valueof 返回 clas append pri insert 拼接 解決
字符串操作過程中,每次用 + 拼接字符串,有以下問題:
- 每次循環都會創建新的對象
- 絕大部分都是臨時對象。浪費內存
- 影響GC效率
String s = "";
for(int i=0;i<1000;i++){
s = s +String.valueOf(i);
}
System.out.println(s);
為了解決這個問題,Java提供了StringBuilder類,可以高效的拼接字符串
1.StringBuffer類
- StringBuilder是可變對象
- StringBuilder可以預分配緩沖區
StringBuilder sb = new StringBuilder(1024);
for (int i=0;i<1000;i++){
sb.append(String.valueOf(i));
}
String s = sb.toString();
2.StringBuilder可以進行鏈式操作
String name = "Green"; StringBuilder sb = new StringBuilder(1024); String s = sb.append("Mr ").append(name) .append("!").insert(0,"Hello,") .toString(); System.out.println(s);
不需要特別改寫字符串 + 操作
編譯器在內部自動把多個連續的 + 操作優化為StringBuilder操作
3.StringBuffer:
- StringBuilder和StringBuffer接口完全相同
- StringBuffer是StringBuilder的線程安全版本
- 跨線程做字符串很少見,因此沒有必要使用StringBuffer
4.總結
- StringBuilder是可變對象,用來高效拼接字符串
- StringBuilder可以支持鏈式操作
- 實現鏈式操作的關鍵是返回實例本身
- StringBuffer是StringBuilder的線程安全版本,很少使用
廖雪峰Java2面向對象編程-6Java核心類-1StringBuilder