HashMap/HashTable/String/StringBuffer/StringBuilde

自從Java 5.0發佈之後,咱們的比較列表上將多出一個對象了,這就是StringBuilder類。String類是不可變類,任何對String的改變都會引起 新的String對象的生成;而StringBuffer則是可變類,任何對它所指代的字符串的改變都不會產生新的對象,可變和不可變類這一對對象已經齊 全了,那麼爲何還要引入新的StringBuilder類幹嘛?相信你們都有此疑問,我也如此。下面,咱們就來看看引入該類的緣由。安全

      爲何會出現那麼多比較String和StringBuffer的文章?性能

      緣由在於當改變字符串內容時,採用StringBuffer能得到更好的性能。既然是爲了得到更好的性能,那麼採用StringBuffer可以得到最好的性能嗎?ui

      答案是NO!線程

      爲何?對象

      若是你讀過《Think in Java》,並且對裏面描述HashTable和HashMap區別的那部分章節比較熟悉的話,你必定也明白了緣由所在。對,就是支持線程同步保證線程安 全而致使性能降低的問題。HashTable是線程安全的,不少方法都是synchronized方法,而HashMap不是線程安全的,但其在單線程程 序中的性能比HashTable要高。StringBuffer和StringBuilder類的區別也在於此,新引入的StringBuilder類不 是線程安全的,但其在單線程中的性能比StringBuffer高字符串

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息