java公用方法:equals方法详解

equals函数在基类object中已经定义,源码如下:

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

从源码中可以看出默认的equals()方法与“==”是一致的,都是比较的对象的引用,而非对象值。

这里与我们常识中equals()用于对象的比较是相饽的,原因是java中的大多数类都重写了equals()方法。

下面已String类举例,String类equals()方法源码如下:

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;
    }

String类的equals()非常简单,只是将String类转换为字符数组,逐位比较。

综上,使用equals()方法我们应当注意:

 1. 如果应用equals()方法的是自定义对象,你一定要在自定义类中重写系统的equals()方法。

原文地址:https://www.cnblogs.com/xiaotian15/p/3665317.html