1. 程式人生 > >3.6.3 不可變字符串

3.6.3 不可變字符串

變量 共享 高效 由於 提取 java字符串 設計者 編譯 永遠

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的設計者認為共享帶來的高效率遠遠勝於提取、拼接字符串所帶來的低效率。實際生產中,很少需要修改字符串,而是往往需要對字符串進行比較。

3.6.3 不可變字符串