1. 程式人生 > >Java中Stringbuilder和StringBuffer的區別

Java中Stringbuilder和StringBuffer的區別

①執行速度。在這方面執行速度快慢為:StringBuilder > StringBuffer > String
String最慢的原因:

String為字串常量,而StringBuilder和StringBuffer均為字串變數,即String物件一旦建立之後該物件是不可更改的,但後兩者的物件是變數,是可以更改的。
  Java中對String物件進行的操作實際上是一個不斷建立新的物件並且將舊的物件回收的一個過程,所以執行速度很慢。
  而StringBuilder和StringBuffer的物件是變數,對變數進行操作就是直接對該物件進行更改,而不進行建立和回收的操作,所以速度要比String快很多。
②執行緒安全
線上程安全上,StringBuilder是執行緒不安全的,而StringBuffer是執行緒安全的
如果一個StringBuffer物件在字串緩衝區被多個執行緒使用時,StringBuffer中很多方法可以帶有synchronized關鍵字,所以可以保證執行緒是安全的,但StringBuilder的方法則沒有該關鍵字,所以不能保證執行緒安全,有可能會出現一些錯誤的操作。所以如果要進行的操作是多執行緒的,那麼就要使用StringBuffer,但是在單執行緒的情況下,還是建議使用速度比較快的StringBuilder。

     String:適用於少量的字串操作的情況

StringBuilder:適用於單執行緒下在字元緩衝區進行大量操作的情況
  
   StringBuffer:適用多執行緒下在字元緩衝區進行大量操作的情況
2018/11/8