前面看到有人寫String和stringBudffer的區別是前者是不能改寫的,后者是可以改寫的
我覺得說String的字符串不能改變話是不錯,但是例子要舉好
看看下面這個簡單的例子:
首先,
public class xx {public static void main(String[] args) { String s1 = "You are hired!";String s2 = "You are hired!";if (s1==s2) {System.out.
打印的結果是:一個內存空間
這里==的意義是兩個操作數是否指向同一個對象
可見s2在不用new創建的情況下會自動檢索到具有相同內容的內存空間中共享,那么既然s1和s2共享了同一個對象
再看下面的代碼
public class xx {public static void main(String[] args) { String s1 = "You are hired!";String s2 = "You are hired!";s1 = s1.replace('h','f');System.out.println(s1);if (s1==s2) {System.out.println("一個內存空間");} else {System.out.println("不是一個內存空間");}} }
代碼結果是
You are fired!
不是一個內存空間
可見,String中s1的內容雖然被改寫,但是已經不在是原來第一次分配到的那個內存空間,也就是String類的內容能被改變,但一旦改變系統將為其分配新的內存
說到與stringBuffer的區別,從根本上來說應該是
stringBuffer在做字符長度變動的時候將繼續使用原來的內存空間,不新分配.
而String的長度一旦變動,就如上面的例子一樣,其內部將分配新的內存空間.
進入討論組討論。新聞熱點
疑難解答