1. 程式人生 > >Java中字串拼接是使用 + 還是 StringBuffer

Java中字串拼接是使用 + 還是 StringBuffer

    直奔主題,一般在拼接是我們都是習慣使用 + ,當然如果只是短呃字串拼接 使用 + 是毋庸置疑的,為什麼呢?

主要就是:自己操作方便,開發速度快。其實就是方便。

    但是如果是大範圍的 字串拼接 ,比如下面的程式碼 做的測試

long currentTimeMillis = System.currentTimeMillis();
		StringBuffer stringBuffer = new StringBuffer();
		for(int i=0;i<100000;i++) {
			stringBuffer.append(i);
		}
		long currentTimeMillis1 = System.currentTimeMillis();
		System.out.println(currentTimeMillis1 - currentTimeMillis);
		long currentTimeMillis2 = System.currentTimeMillis();
		String bb="";
		for(int i=0;i<100000;i++) {
			bb +=i;
		}
		long currentTimeMillis3 = System.currentTimeMillis();
		System.out.println(currentTimeMillis3-currentTimeMillis2);

結果真是大大的不同,速度相差很大。  6,35272。我測試的是這樣的結果,幾次測試都差不多的速度。可見 在打範圍的 使用 + 所帶來的速度,當然這個不只是速度問題,也關於 記憶體問題  檢視原始碼可以得到 :一個 + 號 就會 new StringBuffer(); 雖然Java有GC 但是這個你無法判斷它多久回收,所以在使用 + 記憶體肯定會 一路飆升。所以從理論上說 只要有 拼接字串就使用 StringBuffer 是完全沒有問題的。再加上記憶體顯示圖:

在峰值的顯示就是 在執行是的CPU 情況,所以還是慎用 + 

    在最後是我要說的是其實  StringBuilder 來連線時,速度更快一些,但是在拼接的時候資料量不大的時候差別不大,即使在百萬級的拼接的時候也只是 5 毫秒左右的差距,一般的小專案無所謂,但是大資料量的情況還是有差距的。