3.6.3 不可變字串
阿新 • • 發佈:2018-12-15
String類沒有提供用於修改字串的方法。如果希望將 greeting 的內容修改為“gre!”,不能直接地將 greeting 的第3個元素之後內容替換成'!'。
Java中的操作方法,首先提取需要的字元,然後再拼接上替換的字串:
String s = "greeting";
String ss = s.substring(0,3) + "!";
System.out.println(ss); //輸出結果為:gre!
由於不能修改Java字串中的字元,所以在Java文件中將String類物件稱為不可變字串,如同數字3永遠是數字3一樣,字串“Hello”永遠包含字元H、e、l、l和o的程式碼單元序列,而不能修改其中的任何一個字元。當然,如果修改字串變數greeting,讓它引用另外一個字串,這就如同可以將存放3的數值變數改成存放4一樣。
不可變字串的一個優點:編譯器可以讓字串共享。
可以想象將各種字串存放在公共的儲存池中。字串變數指向儲存池中相應的位置。如果賦值一個字串變數,原始字串與複製的字串共享相同字元。
總之,Java的設計者認為共享帶來的高效率遠遠勝於提取、拼接字串所帶來的低效率。實際生產中,很少需要修改字串,而是往往需要對字串進行比較。