接觸Java到如今總的來講時間也不算短,發現身邊的一些朋友對String字符串鏈接符或多或少存在誤解(可能我理解的也不對,歡迎指正),隨便寫寫本身的一些觀點app
Java對比C++少了運算符重載,字符串鏈接符"+"底層實現是經過StringBuffer和StringBuilder來實現的。在Java中拼接字符串要麼用字符串鏈接符"+",要麼用StringBuffer或StringBuilder,許多人糾結這兩種方式的效率問題。ui
先說說下面的這種狀況:spa
String str = "Hello "+"world "+"!";內存
這種靜態字符串連接,編譯的時候編譯器會自動將之看做:String str = "Hello world !",比之以下代碼效率要高不少。字符串
StringBuffer strBuffer = new StringBuffer();編譯器
strBuffer.append("Hello ");編譯
strBuffer.append("world ");效率
strBuffer.append("!");時間
對於動態字符串StringBuffer的效率比字符串鏈接符效率要高。字符
strBuffer.append(String.valueOf(new Date()));比str=str+String.valueOf(new Date());執行效率和內存消耗都小不少。
連接靜態字符串,建議用字符串鏈接符,連接動態字符串建議使用StringBuffer或StringBuilder。