ChenJLang

曾经有一份真挚的爱情 摆在我的面前 我没有珍惜 当我失去的时候 我才后悔莫及 人世间最悲伤的事情莫过于此 如果上天能让我再对那个女孩子说三个字 我爱你 如果非要让这次爱上面加个期限 我希望是一万年。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

先看源码

Object:

  public native int hashCode();

  public boolean equals(Object obj) {
      return (this == obj);
     }

String:

  public int hashCode() {
    int h = hash;
        int len = count;
    if (h == 0 && len > 0) {
        int off = offset;
        char val[] = value;

            for (int i = 0; i < len; i++) {
                h = 31*h + val[off++];
            }
            hash = h;
        }
        return h;
    }

 

  public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;
        while (n-- != 0) {
            if (v1[i++] != v2[j++])
            return false;
        }
        return true;
        }
    }
    return false;
    }

 

Integer:

public int hashCode() {
    return value;
    }

 public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
    }

 

 

可以知道String重写了Object的hashcode()和equals(),

==比较的是2个对象的地址,而equals比较的是2个对象的内容

 

posted on 2016-11-07 15:53  ChenJLang  阅读(197)  评论(0编辑  收藏  举报