Java中字串拼接是使用 + 還是 StringBuffer
阿新 • • 發佈:2019-02-13
直奔主題,一般在拼接是我們都是習慣使用 + ,當然如果只是短呃字串拼接 使用 + 是毋庸置疑的,為什麼呢?
主要就是:自己操作方便,開發速度快。其實就是方便。
但是如果是大範圍的 字串拼接 ,比如下面的程式碼 做的測試
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 毫秒左右的差距,一般的小專案無所謂,但是大資料量的情況還是有差距的。