如何在Java中进行字符串(String)比较
2014-05-30 21:30
309 查看
一直以来我都是用“ ==” 操作符来比较字符串。但是,我遇到了一个错误,用 .equals() 替换了一个 == 操作符,错误就解决了。
== 是不好的咩? 到底应不应该用它? 用不用的区别是什么?
-----------------------------------------------------分割线-------------------------------------------------------------------------------------
票选答案一:
“==” 检验引用是否相同
.equals() 检验值是否相等
因此,如果你真的想要检验两个字符串是否有相等的值,那么你应该用 .equals() (除了少数情况下,你可以保证两个有相同的值的字符串将代表同一个对象 例如:字符串的留驻String interning)
“==”是用来检验两个字符串是否为同一个对象的
需要注意的是 == 相比equals() 要略低级一些(只是一个简单的引用比较而不是一个方法调用),因此,在某些情况下可能适用。(例如 你可以确定你只是处理interned strings)它可以展现重要的性能改进。当然,这种情况也是比较少见的。
原文地址 http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java
== 是不好的咩? 到底应不应该用它? 用不用的区别是什么?
-----------------------------------------------------分割线-------------------------------------------------------------------------------------
票选答案一:
“==” 检验引用是否相同
.equals() 检验值是否相等
因此,如果你真的想要检验两个字符串是否有相等的值,那么你应该用 .equals() (除了少数情况下,你可以保证两个有相同的值的字符串将代表同一个对象 例如:字符串的留驻String interning)
“==”是用来检验两个字符串是否为同一个对象的
<span style="font-size:14px;">// 这两个有相同的值 new String("test").equals("test") // --> true // ... 但不是同一个对象 new String("test") == "test" // --> false // ... 这两个也不是 new String("test") == new String("test") // --> false // ... but these are because literals are interned by 但是这两个是, // the compiler and thus refer to the same object "test" == "test" // --> true // concatenation of string literals happens at compile time, // also resulting in the same object字符串连接发生在变异时,所以最终也是同一个对象 "test" == "te" + "st" // --> true// but .substring() is invoked at runtime, generating distinct objects但是 .substring()在运行时就被调用了,产生了不同的对象"test" == "!test".substring(1) // --> false// interned strings can also be recalled by calling .intern() interned strings也可以通过 .intern()调用 "test" == "!test".substring(1).intern() // --> true </span>
需要注意的是 == 相比equals() 要略低级一些(只是一个简单的引用比较而不是一个方法调用),因此,在某些情况下可能适用。(例如 你可以确定你只是处理interned strings)它可以展现重要的性能改进。当然,这种情况也是比较少见的。
原文地址 http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java
相关文章推荐
- java中字符串的比较,必须使用string1.equals(string2)来进行判断
- 如何将一个String和多个String值进行比较思路分析
- java控制台程序如何判断String字符串中只输入了一个回车
- java中两个字符串如何比较大小
- java中两个字符串如何比较大小
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- java串讲之String 如何定义字符串对象
- java中的String为什么可以使用==比较字符串内容?
- java代码-----String数组进行排序。是英文的字符串
- java如何提取字符串中不连续数字进行操作
- 如何将一个String和多个String值进行比较
- Java:如何使用Cipher类对字符串进行加密解密
- java如何解析json字符串(List<Map<String,Object>成功的类型)
- A Boolean wrapped with string (如何将布尔变量转换为字符串变量--写给java初学者)
- json工具性能比较:json-lib和jackson进行Java对象到json字符串序列化[转]
- 回复:String中如果有中文,如何保证length()返回的长度 在 Java 中字符串是以 Unicode 方式编码的,所以,无论中英文都算的长度为 1。根据你的描述,估计是想要取得英文长度为 1 中文长度为 2 的总长度吧。这个,理论上可以构造 An
- 如何高效地进行远程大规模字符串比较问题
- Java和C#中String直接赋值与使用new创建(==与equals进行比较)的区别
- 利用StringEscapeUtils对字符串进行各种转义与反转义(Java)
- java中string字符串拼装性能比较