StringBuilder、StringBuffer和String三者的聯絡和區別(轉)
StringBuilder、StringBuffer和String三者的聯絡和區別
1. String 類
String的值是不可變的,這就導致每次對String的操作都會生成新的String物件,不僅效率低下,而且大量浪費有限的記憶體空間。
String a = “a”; //假設a指向地址0x0001
a = “b”;//重新賦值後a指向地址0x0002,但0x0001地址中儲存的”a”依舊存在,但已經不再是a所指向的,a 已經指向了其它地址。
因此String的操作都是改變賦值地址而不是改變值操作。
2. StringBuffer是可變類,和執行緒安全的字串操作類,任何對它指向的字串的操作都不會產生新的物件。 每個StringBuffer物件都有一定的緩衝區容量,當字串大小沒有超過容量時,不會分配新的容量,當字串大小超過容量時,會自動增加容量。
StringBuffer buf=new StringBuffer(); //分配長16位元組的字元緩衝區
StringBuffer buf=new StringBuffer(512); //分配長512位元組的字元緩衝區
StringBuffer buf=new StringBuffer(“this is a test”)//在緩衝區中存放了字串,並在後面預留了16位元組的空緩衝區。
3.StringBuffer
StringBuffer和StringBuilder類功能基本相似,主要區別在於StringBuffer類的方法是多執行緒、安全的,而 StringBuilder不是執行緒安全的,相比而言,StringBuilder類會略微快一點。對於經常要改變值的字串應該使用 StringBuffer和StringBuilder類。
4.執行緒安全
StringBuffer 執行緒安全
StringBuilder 執行緒不安全
5.速度
一般情況下,速度從快到慢:StringBuilder>StringBuffer>String,這種比較是相對的,不是絕對的。
6.總結
(1).如果要操作少量的資料用 = String
(2).單執行緒操作字串緩衝區 下操作大量資料 = StringBuilder
(3).多執行緒操作字串緩衝區 下操作大量資料 = StringBuffer
http://www.open-open.com/lib/view/open1322537017406.html
相關文章
- Java 之String、StringBuffer 和 StringBuilder 三者區別介紹JavaUI
- Java中的String,StringBuilder,StringBuffer三者的區別JavaUI
- String、StringBuffer、StringBuilder區別?UI
- String,StringBuffer,StringBuilder區別UI
- String,StringBuilder,StringBuffer的區別UI
- String、StringBuffer、StringBuilder的區別UI
- String、StringBuilder、StringBuffer的區別UI
- String、StringBuilder和StringBufferUI
- StringBuffer和StringBuilder的區別UI
- StringBuilder和StringBuffer的區別UI
- stringbuilder和stringbuffer區別UI
- String,StringBuffer與StringBuilder的區別UI
- String、StringBuffer和StringBuilder類的UI
- 【Java】String、StringBuilder和StringBufferJavaUI
- Android- String、StringBuffer、StringBuilder區別AndroidUI
- String和StringBuilder的區別UI
- StringBuilder和String 的區別?UI
- C# string、stringBuffer和stringBuilderC#UI
- StringBuffer 和 StringBuilder 的 3 個區別UI
- 從原始碼看String,StringBuffer,StringBuilder的區別原始碼UI
- 面試必知:String、StringBuilder、StringBuffer的區別面試UI
- String StringBuffer StringBuilder的區別(前端面試必備)UI前端面試
- 67. StringBuilder和String 的區別?UI
- [java基礎]StringBuilder和StringBuffer的3個區別JavaUI
- 『Java 語法基礎』String、StringBuffer 與 StringBuilder 的區別JavaUI
- [轉載] 整理下java中stringBuilder和stringBuffer兩個類的區別JavaUI
- HTTPS、SSL、TLS三者之間的聯絡和區別HTTPTLS
- String、StringBuffer、StringBuilder的理解UI
- StringBuffer和StringBuilderUI
- String、StringBuffer、StringBuilder剖析UI
- StringBuffer 和 StringBuilder 類UI
- Instruction和Question的區別和聯絡Struct
- 第二十節:詳細講解String和StringBuffer和StringBuilder的使用UI
- String StringBuild StringBuffer的區別UI
- Java StringBuffer 和 StringBuilder 類JavaUI
- 老生常談 String、StringBuilder、StringBufferUI
- SCADA和PLC的區別聯絡
- tcp/ip和http的區別和聯絡TCPHTTP
- JAVA面試題 StringBuffer和StringBuilder的區別,從原始碼角度分析?Java面試題UI原始碼