美文网首页
String 类的 equals 与 hashcode 及方法书

String 类的 equals 与 hashcode 及方法书

作者: LynnGuo | 来源:发表于2018-05-21 14:58 被阅读0次

String 类的方法

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;

            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }
实现高质量的equals方法的诀窍包括:
1. 使用 == 操作符检查参数是否为这个对象的引用;
2. 使用 instanceof 操作符检查 参数是否为正确的类型;
3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;
4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;
5. 重写 equals 时总是要重写 hashCode;
6. 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。

相关文章

网友评论

      本文标题:String 类的 equals 与 hashcode 及方法书

      本文链接:https://www.haomeiwen.com/subject/omdxrftx.html