String以及String比较符的问题(接前篇博文)
来源:互联网 发布:淘宝好评返现常用语 编辑:程序博客网 时间:2024/04/27 13:42
由于不能修改Java字符串中的字符,所以在Java文档中将String类对象称为不可变字符串,如同数字3永远是数字3一样,字符串中包含不变的代码单元序列,而不能修改其中的任何一个字符。
不可变字符串有一个优点:编译器可以让字符串共享。
为了弄清具体的工作方式,可以想象将各种字符串存放在公共的存储池中。字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。
总而言之,Java的设计者认为共享带来的高效率远远胜于提取/拼接字符串所带来的低效率。查看一下程序会发现:很少需要修改字符串,而是往往需要对字符串进行比较(有一种例外情况,将源自于文件或键盘的单个字符或较短的字符串汇集称字符串。为此,Java提供了一个独立的类StringBuilder)
检查字符串是否相等,可以使用equals方法检测两个字符串是否相等。
一定不能使用==运算符检测两个字符串是否相等!这个运算符只能确定两个字符串是否放置在同一个位置上。
如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相等。但实际上只有字符串常量是共享的。而+或substring等操作产生的结果并不是共享的。因此千万不要使用==运算符检测字符串的相等性。
不可变字符串有一个优点:编译器可以让字符串共享。
为了弄清具体的工作方式,可以想象将各种字符串存放在公共的存储池中。字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。
总而言之,Java的设计者认为共享带来的高效率远远胜于提取/拼接字符串所带来的低效率。查看一下程序会发现:很少需要修改字符串,而是往往需要对字符串进行比较(有一种例外情况,将源自于文件或键盘的单个字符或较短的字符串汇集称字符串。为此,Java提供了一个独立的类StringBuilder)
检查字符串是否相等,可以使用equals方法检测两个字符串是否相等。
一定不能使用==运算符检测两个字符串是否相等!这个运算符只能确定两个字符串是否放置在同一个位置上。
如果虚拟机始终将相同的字符串共享,就可以使用==运算符检测是否相等。但实际上只有字符串常量是共享的。而+或substring等操作产生的结果并不是共享的。因此千万不要使用==运算符检测字符串的相等性。
- String以及String比较符的问题(接前篇博文)
- java---String的比较问题
- String类的比较问题
- String的equals以及hashcode比较总结
- String与StringBuilder以及StringBuffer的比较
- String类的创建方式,以及比较
- java功底之String的比较问题
- java功底之String的比较问题
- Java String类型变量的比较问题
- 关于String比较的一些问题
- java String类的比较问题
- 关于String类型变量的比较问题
- String类型的比较
- String 类的比较
- string对象的比较
- java String的比较
- string的比较
- String & StringBuffer的比较
- 细分市场制胜
- 空降兵变革是怎样失败的
- 基本数据结构——栈、队列和单链表
- ODP.NET的ODAC组件使用输出参数(Out Parameter)时注意事项
- Ubuntu Linux创建桌面启动器
- String以及String比较符的问题(接前篇博文)
- posix_fadvise源码分析
- Servlet中的Filter在Struts2中的执行流程
- INVICTUS
- Oracle BBED工具说明
- http://www.laomaotao.net/?U2966
- redhat6.3系统下的kscope1.6.2安装——RHEL6.3 本地创建YUM源
- bbed 命令测试记录,备查吧
- 伟大决策的6大基石