String以及String比较符的问题(接前篇博文)

来源:互联网 发布:淘宝好评返现常用语 编辑:程序博客网 时间:2024/04/27 13:42
由于不能修改Java字符串中的字符,所以在Java文档中将String类对象称为不可变字符串,如同数字3永远是数字3一样,字符串中包含不变的代码单元序列,而不能修改其中的任何一个字符。
不可变字符串有一个优点:编译器可以让字符串共享。
为了弄清具体的工作方式,可以想象将各种字符串存放在公共的存储池中。字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。
总而言之,Java的设计者认为共享带来的高效率远远胜于提取/拼接字符串所带来的低效率。查看一下程序会发现:很少需要修改字符串,而是往往需要对字符串进行比较(有一种例外情况,将源自于文件或键盘的单个字符或较短的字符串汇集称字符串。为此,Java提供了一个独立的类StringBuilder)
检查字符串是否相等,可以使用equals方法检测两个字符串是否相等。
一定不能使用==运算符检测两个字符串是否相等!这个运算符只能确定两个字符串是否放置在同一个位置上。
如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相等。但实际上只有字符串常量是共享的。而+或substring等操作产生的结果并不是共享的。因此千万不要使用==运算符检测字符串的相等性。
原创粉丝点击