前面看到有人寫String和stringBudffer的區別是前者是不能改寫的後者是可以改寫的
我覺得說String的字符串不能改變話是不錯但是例子要舉好
看看下面這個簡單的例子:
首先
public class xx {
public static void main(String[] args) {
String s = You are hired!;
String s = You are hired!;
if (s==s) {
Systemoutprintln(一個內存空間);
} else {
Systemoutprintln(不是一個內存空間);
}
}
}
打印的結果是:一個內存空間
這裡==的意義是兩個操作數是否指向同一個對象
可見s在不用new創建的情況下會自動檢索到具有相同內容的內存空間中共享那麼既然s和s共享了同一個對象
再看下面的代碼
public class xx {
public static void main(String[] args) { String s = You are hired!;
String s = You are hired!;
s = sreplace(hf);
Systemoutprintln(s);
if (s==s) {
Systemoutprintln(一個內存空間);
} else {
Systemoutprintln(不是一個內存空間);
}
}
}
代碼結果是
You are fired!
不是一個內存空間
可見String中s的內容雖然被改寫但是已經不在是原來第一次分配到的那個內存空間也就是String類的內容能被改變但一旦改變系統將為其分配新的內存
說到與stringBuffer的區別從根本上來說應該是
stringBuffer在做字符長度變動的時候將繼續使用原來的內存空間不新分配
而String的長度一旦變動就如上面的例子一樣其內部將分配新的內存空間
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25413.html