千萬級測試String、StringBuffer和StringBuilder的速度

面試是經常被問到StringStringBuilderStringBuffer三者的速度有什麼區別,經過測試後,這三者的執行速度關係是:StringBuilder > StringBuffer > String,測試過程如下:

public class TestStringTools {

	public static void main(String[] args) {
		
		// 測試String速度
		System.out.println("String 開始時間"+System.currentTimeMillis());
		String testString = "test";
		for(int i=0; i<=100000; i++) {
			testString = testString + "第" + i + "個";
		}
		System.out.println("String 結束時間"+System.currentTimeMillis());
		
		// 測試StringBuilder速度
		System.out.println("StringBuilder 開始時間"+System.currentTimeMillis());
		StringBuilder testBuilder = new StringBuilder("test");
		for(int i=0; i<=10000000; i++) {
			testBuilder.append("第" + i + "個");
		}
		System.out.println("StringBuilder 結束時間"+System.currentTimeMillis());
		
		// 測試StringBuffer速度
		System.out.println("StringBuffer 開始時間"+System.currentTimeMillis());
		StringBuffer testBuffer = new StringBuffer("test");
		for(int i=0; i<=10000000; i++) {
			testBuffer.append("第" + i + "個");
		}
		System.out.println("StringBuffer 結束時間"+System.currentTimeMillis());
		
	}

}

由於用 String 做字符串拼接實在太慢了,因此我們這裏只進行10萬次循環,而StringBuilderStringBuffer進行1千萬次循環,然後對結果進行比較:
在這裏插入圖片描述
String 進行10萬次字符串拼接,時間是:42354毫秒
StringBuilder 進行1千萬次字符串拼接,時間是:445毫秒
StringBuffer 進行1千萬次字符串拼接,時間是:755毫秒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章