String,StringBuilder,StringBuffer區別以及使用場景

筆者經常忘記三者之間的區別,下面自己總結一番,畫一個表格來展示

Item "+"區別 多線程 性能 使用場景 優化
String 不可變類,重新創建字符串 不安全 拼接時,性能差 操作少量數據,字符串不變時
StringBuilder 可變類,原字符串基礎上生成字符串 不安全 性能最好(比StringBuffer高10%-15%) 單線程操作大量數據(方法內部,用完回收) 盡可能指定容量(默認:16,不超過16個字符不用指定),不指定顯著降低性能
StringBuffer 可變類,原字符串基礎上生成字符串 安全 性能好 主要用在全局變量中,多線程下安全 同上

在現實的模塊化編程中,負責某一模塊的程序員不一定能清晰的判斷該模塊是否會放入多線程的環境中運行,除非確定系統的瓶頸是在StringBuffer上,并且確定你的模塊不會運行在多線程模式下,才可以采用StringBuilder,否則還是用StringBuffer

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容