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的设计者认为共享带来的高效率远远胜于提取、拼接字符串所带来的低效率。实际生产中,很少需要修改字符串,而是往往需要对字符串进行比较。
 

猜你喜欢

转载自www.cnblogs.com/avention/p/10123683.html