【发布时间】:2013-04-06 15:43:07
【问题描述】:
我现在正在学习 Java。当我使用== 和.equals() 进行字符串比较时,我得到了不同的结果。但是没有编译错误。谁能解释一下这两种操作的区别?
【问题讨论】:
我现在正在学习 Java。当我使用== 和.equals() 进行字符串比较时,我得到了不同的结果。但是没有编译错误。谁能解释一下这两种操作的区别?
【问题讨论】:
s1 == s2 比较字符串references;这很少是你想要的。s1.equals(s2) 比较两个字符序列;这几乎总是你想要的。【讨论】:
== 测试引用是否相等。
.equals() 测试值相等。
例子:
String fooString1 = new String("Java");
String fooString2 = new String("Java");
// false
fooString1 == fooString2;
// true
fooString1.equals(fooString2);
注意:
== 处理空字符串值。
来自空字符串的.equals() 将导致Null Pointer Exception
【讨论】:
当 == 用于 String 之间的比较时,它会检查对象的引用。但是当使用 equals 时,它实际上会检查字符串的内容。比如
String a = new String("ab");
String b = new String("ab");
if(a==b) ///will return false because both objects are stored on the different locations in memory
if(a.equals(b)) // will return true because it will check the contents of the String
希望对你有帮助
【讨论】: