String和StringBuffer、StringBuilder的區別
目錄:
1、String類的不可變性
2、用String的時候需要註意什麼
3、String與StringBuilder的區別
4、StringBuilder和StringBuffer的區別
String類的不可變性:
這個不可變性需要看源碼,String類中有幾個成員變數:
private final char[] value;//存放String的值
private final int offset;
private final int count;
他們都是final類型的,當你創建一個String之後它們就無法改變,所以這個不可變指的是String的值value不可變。
用String的時候需要註意什麼
由於String的不可變性所以應該避免創建大量的String對象,應為大量final類型的String對象會暫用大量的記憶體,記憶體可是很寶貴的。
String與StringBuilder的區別
StringBuilder進行字元串的連接等操作時不會創建新的字元串對象,所以在操作字元串的時候推薦把一個String轉換為StringBuilder再進行操作,這樣可以節省記憶體。
StringBuilder和StringBuffer的區別
它倆的區別就是StringBuffer是線程安全的,它的方法都加了鎖,多在多線程中使用,在單線程中建議使用StringBuilder,會更快。