zoukankan      html  css  js  c++  java
  • hashCode()和equals()

    先看源码

    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个对象的内容

  • 相关阅读:
    ETL概述
    POI操作Excel常用方法总结
    段的创建表user_segments
    定位导致物化视图无法快速刷新的原因
    在shell脚本中调用sqlplus
    Oracle 字符集的查看和修改
    Java Web发布
    JSP搭建
    完全卸载oracle11g步骤:
    剑指offer——二叉排序树(BST)、平衡二叉树(AVL)
  • 原文地址:https://www.cnblogs.com/ChenLLang/p/6039236.html
Copyright © 2011-2022 走看看