String、StringBuilder、StringBuffer區別

String 字符串常量,不可變
StringBuffer 字符串變量(線程安全)
[color=red]StringBuilder 字符串變量(非線程安全)快[/color]


1.如果要操作少量的數據用 = String
2.單線程操作字符串緩衝區 下操作大量數據 = StringBuilder
3.多線程操作字符串緩衝區 下操作大量數據 = StringBuffer


String是不可變的,StringBuffer是可變的;StringBuffer是線程安全的,StringBuilder是非線程安全的。
因而在大部分情況下字符串的拼接速度爲:StringBuilder>StringBuffer>String
解釋如下:
因爲String是不可變的(通過ide的debugger可以發現其屬性大都爲final類型),因此每次對其操作改變其變量值,其實是生成一個新的對象,然後將變量引用指向新對象;因此速度慢。

StringBuffer則不同,對其操作即直接操作對象指向的引用,無需產生新對象,速度很快;它是線程安全的,在維護多線程的同步等也會消耗一點性能。

StringBuilder是jdk5之後新增的,其用法與StringBuffer完全一致,但它是線程不安全的,在單線程中最佳,因爲其不需要維護線程的安全,因此是最快的。
發佈了287 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章