java公用方法:equals方法详解

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

java公用方法:equals方法详解
 public boolean equals(Object obj) {
        return (this == obj);
    }
java公用方法:equals方法详解

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

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

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

java公用方法: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;
    }
java公用方法:equals方法详解

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

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

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

java公用方法:equals方法详解,布布扣,bubuko.com

java公用方法:equals方法详解

上一篇:C++ Project 积累 (1)


下一篇:java语法基础: