3.6.3 不可变字符串

Posted avention

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.6.3 不可变字符串相关的知识,希望对你有一定的参考价值。

    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 不可变字符串的主要内容,如果未能解决你的问题,请参考以下文章

不可变字符串 NSString与可变字符串 NSMutableString

可变不可变类型

可变不可变类型,数字类型及其常用操作,字符串类型及其常用操作

python中字符串数据类型是不可变数据类型

可变,不可变类型和hash

可变不可变数据类型和hash