String類沒有提供用于修改字符串的方法。如果希望將 greeting 的內容修改為“ Help!”, 不能直接地將 greeting的最后兩個位置的字符修改為 ‘ p’ 和 ‘ ! 。這對于 C 程序員來說,將會感到無從下手 。如何修改這個字符串呢?
在 Java中實現這項操作非常容易。
首先提取需要的字符, 然后再拼接上替換的字符串:
greeting = greeting.substring(0, 3) + "p!";
//上面這條語句將 greeting 當前值修改為“ Help !”。
??由于不能修改 Java 字符串中的字符, 所以在 Java 文檔中將 String類對象稱為不可變字符串, 如同數字 3 永遠是數字 3—樣,字符串“ Hello” 永遠包含字符 H、 e、1、1 和 o 的代碼單元序列, 而不能修改其中的任何一個字符。當然, 可以修改字符串變量 greeting,讓它引用另外一個字符串, 這就如同可以將存放 3 的數值變量改成存放 4一樣。
??看起來好像修改一個代碼單元要比創建一個新字符串更 加簡潔。答案是:也對,也不對。
??的確, 通過拼接“ Hel” 和“ p!” 來創建一個新字符串的 效率確實不高。但是,不可變字符串卻有一個優點:編譯器可以讓字符串共享。
??為了弄清具體的工作方式,可以想象將各種字符串存放在公共的存儲池中。字符串變量 指向存儲池中相應的位置。如果復制一個字符串變量, 原始字符串與復制的字符串共享相同 的字符。
??總而言之,Java 的設計者認為共享帶來的高效率遠遠勝過于提取、 拼接字符串所帶來的 低效率。查看一下程序會發現:很少需要修改字符串, 而是往往需要對字符串進行比較(有一種例外情況,將來自于文件或鍵盤的單個字符或較短的字符串匯集成字符串。)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态