-1

我现在正在学习Java。当我使用==and.equals()进行字符串比较时,我得到了不同的结果。但是没有编译错误。谁能解释这两种操作之间的区别?

4

3 回答 3

2
  • s1 == s2比较字符串引用;这很少是你想要的。
  • s1.equals(s2)比较两个字符序列;这几乎总是你想要的。
于 2013-04-06T15:44:23.797 回答
1

==测试参考相等。

.equals()测试值相等。

例子:

String fooString1 = new String("Java");
String fooString2 = new String("Java");

// false
fooString1 == fooString2;

// true
fooString1.equals(fooString2);

笔记:

==处理空字符串值。

.equals()从一个空字符串将导致Null Pointer Exception

于 2013-04-06T15:44:44.110 回答
0

当 == 用于 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

我希望这有帮助

于 2013-04-06T15:47:53.713 回答