String類 和 StringBuilder類的區別
阿新 • • 發佈:2019-01-27
知識點:
java.lang.String類
字串是常量 ; 它們的值在建立之後不能更改。
String實現字串加法:就會在記憶體中建立很多字串佔用記憶體,
佔用記憶體越多,程式的效率就越低。
java.lang .StringBuilder類:
字串緩衝區,可以提高字串的效率,支援可變的字串.
StringBuilder實現字串加法,始終是一個數組,佔用記憶體少, 所以效率高。
用到的知識:
System.currentTimeMills() / / 獲取毫秒值.
public StringBuilder append(…): 新增任意型別的字串
案 例 :
//請使用程式碼實現
// 分別使用String的+=和StringBuilder的append方法對字串做100000次拼接,
// 計算String拼接100000次花費時間與StringBuilder拼接100000次所花費時間並列印。
public class Test09_currentTimeMillis {
public static void main(String[] args) {
// System類下的 currentTimeMillis方法
long l = System.currentTimeMillis(); //開始的毫秒值
String s = "ab" ; // String的+= 對字串做100000次拼接,
for (int i = 0; i < 100000; i++) {
s += "c" ;
}
long l1 = System.currentTimeMillis();//結束時的毫秒值
long s1 = l1 - l ; // 相減的時間就是所耗費的時間.
System.out.println("String所耗費的時間是:"+s1+"毫秒");
// 建立一個StringBuilder物件
long time = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {
sb.append("abc");
}
long time1 = System.currentTimeMillis();
System.out.println("StringBuilder類所耗費的時間是:"+(time1-time)+"毫秒");
}
}
執行結果如下:
根據執行結果顯示,很明顯StringBuilder效率更高。
知識點擴充:
鏈式程式設計:
builder.append(“hello”).append(“jian”).append(100).append(true);
System.out.println(builder);