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