天天看點

String,StringBuffer和StringBuilder的異同

String,StringBuffer和StringBuilder的異同

String,StringBuffer和StringBuilder的的源碼已經在本部落格的JDK源碼學習系列中有了詳細的介紹:

String 源碼: 

StringBuffer 和StringBuilder 源碼: 

相同點:1.三者都是final類,不能被繼承。

不同點:1. String 是不可變類,而 StringBuffer和StringBuilder是可變的。

                 2.String 中的成員變量 value,siaze,count都是final修飾的,不可改變,而  StringBuffer和StringBuilder  同繼承于                                               AbstractStringBuilder,成員變量沒有被final修飾。

                 3.StringBuffer自從jdk1.0就有了,而StringBuilder是jdk1.5 才引入。

                 4.StringBuffer 是線程安全的,但是 慢。

                 5.StringBuilder是非線程安全的,但是 快。

                 6.少量資料拼接用String的“+”;大量資料多線程時用StringBuffer;大量資料單線程時用StringBuilder.