String和StringBuffer的區別

簡單講就是一個是常量,一個是變量。

String是不可變類,String對象一旦創建,其值就不能被改變,重新賦值其實是兩個對象
比如說:
String str = “aaaa”; 相當於str是一個常量, 當對str進行操作的時候,比如 str += “bbbb”; 它不是簡單的在”aaaa”後面加上”bbbb”, 而是在內存中重新開一個空間,先拷貝”aaaa”再接着拷貝”bbbb”組成新的 字符串”aaaabbbb”,並把這個字符串的引用重新賦值給str, 也就是說,對於一個String對象引用,你最好就只是取用它, 一旦你對它進行任何操作都將導致引用本身改變,而且還有很高的代價。

StringBuffer是可變類,對象被創建後仍然可以對其值進行修改。

另外一個區別,實例化String時,可以利用構造函數(String s = new String(“sss”))的方式來初始化或者用賦值(String = “sss”)的方式初始化。
StringBuffer只能通過構造函數(StringBuffer s = new StringBuffer(“bbb”))的方式初始化。

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