Java基礎——String、StringBuiler、StringBuffer的用法和區別
阿新 • • 發佈:2018-12-05
1.區別
1.1 三者本質區別
String:每次增加資料都會開闢新空間,儲存資料,將上一塊空間通過GC進行回收
StringBuiler、StringBuffer:是可變長度,資料增加是直接在現有空間進行操作
1.2 StringBuiler StringBuffer區別
非執行緒安全 StringBuiler:
執行緒安全 StringBuffer:多執行緒中建議使用
2.用法
2.1 三者用法
String str ="abc1"; str += "jk";StringBuilder str2 = new StringBuilder("abc2"); str2.append("jk");StringBuffer str3 = new StringBuffer("abc3"); str3.append("jk");
2.2 具體示例
package com.java8.string0824; public class Test1 { public static void main(String arg[]){ // 1.String // 每次增加資料都會開闢新空間,儲存資料,將上一塊空間通過GC進行回收 // 迴圈過程中:開闢1000個空間,銷燬999次 long startTime = System.currentTimeMillis(); String str ="abc1"; System.out.println(str); for (int i = 0; i < 1000; i++) { str += "jk"; } System.out.println(str); long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); // 2.StringBuilder // 是可變長度,資料增加是直接在現有空間進行操作 // 不會開闢和銷燬新空間 // 僅僅在現有空間中,增加資料 long startTime2 = System.currentTimeMillis(); StringBuilder str2 = new StringBuilder("abc2"); System.out.println(str2); for (int i = 0; i < 1000; i++) { str2.append("jk"); } System.out.println(str2); long endTime2 = System.currentTimeMillis(); System.out.println(endTime2 - startTime2); // 3.StringBuffer // 是可變長度,資料增加是直接在現有空間進行操作 // 不會開闢和銷燬新空間 // 僅僅在現有空間中,增加資料 long startTime3 = System.currentTimeMillis(); StringBuffer str3 = new StringBuffer("abc3"); System.out.println(str3); for (int i = 0; i < 1000; i++) { str3.append("jk"); } System.out.println(str3); long endTime3 = System.currentTimeMillis(); System.out.println(endTime3 - startTime3); } }
結果:
3.String、StringBuiler、StringBuffer的執行速度
StringBuile > StringBuffer > String
4.PS
String:針對少量的字串操作
StringBuiler、StringBuffer:大量字串操作使用另外兩個