String、StringBuffer 與StringBuilder

(接上文)

3、StringStringBuffer StringBuilder

String 字符串常量
StringBuffer 字符串變量(線程安全)
StringBuilder 字符串變量(非線程安全)

看一個栗子:

用字符數組value創建一個String對象   private final String(char[] value)

1 char[] value = {"a","b","c","d"};

2 String str4 = new String(value);//相當於String str4 = new String("abcd");

 

字符串的本質是字符數組,因爲有final修飾,所以String類的對象是不可改變的。所以每次修String對象的值時,實際上是生成了一個新的對象,而指針指向了新的String對象;所以經常改變內容的字符串最好不要用 String ,因爲只要改變就會變成新的對象,創建對象的過程是很消耗性能的每次生成對象都會對系統性能產生影響

StringBuffer:如果是使用 StringBuffer 類則結果就不一樣了,每次結果都會對 StringBuffer 對象本身進行操作,而不是生成新的對象,再改變對象引用。 字符串對象經常改變的情況下推薦使用 StringBuffer類。String的大多數方法StringBuffer都可以使用,除此之外還增加了String沒有的插入和刪除字符串的方法。

StringBuffer buf=new StringBuffer("abc");

String s1=buf.toString(); //轉換爲String

buf.append("abc");    //在字符串後面追加abc ,相當於String中 +“abc”

buf.insert(0,"abc");   //在開頭位置插入abc 

buf.delete(0,5)      //刪除下標從0到5且不包含5的字符

buf.setCharAt(1,’D’);    //則對象buf的值將變成”aDc”

StringBuilder  被設計用作 StringBuffer 的一個簡易替換兩者的方法基本相同由於沒有對方法進行加同步鎖,所以是非線程安全的。但在字符串緩衝區被單個線程使用的時候,處理的效率更高。

發佈了47 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章