Java equals() & ==

Posted Trace Spaces

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java equals() & ==相关的知识,希望对你有一定的参考价值。

Java中equals() & ==的异同,可以通过翻阅JDK源码java.lang.String.equals(Object anObject)的来获得一个感性认识:

 

 1 /**
 2      * Compares this string to the specified object.  The result is {@code
 3      * true} if and only if the argument is not {@code null} and is a {@code
 4      * String} object that represents the same sequence of characters as this
 5      * object.
 6      *
 7      * @param  anObject
 8      *         The object to compare this {@code String} against
 9      *
10      * @return  {@code true} if the given object represents a {@code String}
11      *          equivalent to this string, {@code false} otherwise
12      *
13      * @see  #compareTo(String)
14      * @see  #equalsIgnoreCase(String)
15      */
16     public boolean equals(Object anObject) {
17      if (this == anObject) {
18          return true ;
19      }
20      if (anObject instanceof String) {
21          String anotherString = (String)anObject;
22          int n = count ;
23          if (n == anotherString.count ) {
24            char v1[] = value ;
25            char v2[] = anotherString.value ;
26            int i = offset ;
27            int j = anotherString.offset ;
28            while (n-- != 0) {
29               if (v1[i++] != v2[j++])
30                return false ;
31           }
32            return true ;
33          }
34      }
35      return false;
36     }

从上面可以看到java.lang.String.equals(Object anObject)方法返回true的情况:

  1. 自己与自己比较;
  2. 两个对象都是String,且内容相同。

 

需要注意的:

  1. Java不支持运算符重载(Operator Overloading);
  2. Java中equals()和hashCode()紧密联系,这两个方法被重写(Overriding),所以equals()的的具体含义要看代码实现。

 

以上是关于Java equals() & ==的主要内容,如果未能解决你的问题,请参考以下文章

Java规则之条件语句中做空判断时使用||和&&常犯的错误

强烈推荐浅谈Java中String.equals()和==的区别

强烈推荐浅谈Java中String.equals()和==的区别

java复写equals例子

Java浮点数相等性的判断

java写的简单的登录界面,login.jsp能显示页面,但是执行servlet时不能正常跳转,页面出错