1. 程式人生 > 其它 >Java基礎回顧:String,StringBuilder,StringBuffer

Java基礎回顧:String,StringBuilder,StringBuffer

個人筆記,網上資料以及通過原始碼總結,侵刪

1. String
  • jdk1.8 使用char[]
  • jdk11 使用byte[]
類圖 特性 String的值是不可變的,每次操作String都會生成新的String物件 類似 str += "WORLD!",會改變str指向堆記憶體的地址 初始String值為“hello”,然後在這個字串後面加上新的字串“world”,這個過程是需要重新在棧堆記憶體中開闢記憶體空間的,最終得到了“hello world”字串也相應的需要開闢記憶體空間,這樣短短的兩個字串,卻需要開闢三次記憶體空間,不得不說這是對記憶體空間的極大浪費。為了應對經常性的字串相關的操作,就需要使用Java提供的其他兩個操作字串的類——StringBuffer類和StringBuild類來對此種變化字串進行處理。 執行緒安全
2. StringBuilder 主要引數 初始化預設16個字元長度,可以自定義,如果初始化有值的話,分配大小為 值長度+16. 執行緒不安全 3. StringBuffer 主要引數 同StringBuilder:初始化預設16個字元長度,可以自定義,如果初始化有值的話,分配大小為 值長度+16. 執行緒安全 通過synchronized關鍵字實現執行緒安全
@Override
public synchronized StringBuffer append(Object obj) {
    toStringCache = null;
    super.append(String.valueOf(obj));
    return this;
}
4. 比較 基本原則:如果要操作少量的資料,用String ; 單執行緒操作大量資料,用StringBuilder ; 多執行緒操作大量資料,用StringBuffer。 一點浩然氣,千里快哉風!