码迷,mamicode.com
首页 > 编程语言 > 详细

Java equals() & ==

时间:2017-12-29 15:21:05      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:null   amp   turn   character   seq   value   public   equals   ecif   

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() & ==

标签:null   amp   turn   character   seq   value   public   equals   ecif   

原文地址:https://www.cnblogs.com/huangzejun/p/8143650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!