equals与==的区别

首先明确一点,equals是方法,==是操作符。

 

1. 如果比较的是基本数据类型:

  只讨论==,因为equals是不存在的,因为java中基本数据类型不能调用method的。

 

2. 如果比较的是引用类型:

  ==:比较两个引用是不是指向同一个对象实例,即相同的地址。

  equals:equals方法是Object类的方法,默认是直接调用==来实现。如果没有被重写,那么调用equals与==没有区别。

但是,在一些类库中这个方法被覆盖了,比如八大基本数据类型的包装类和String类,它们的equals方法比较的是值是否相同,此时的equals就与==有区别了。

我们自己也可以根据需要,来重写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;
}

 

原文地址:https://www.cnblogs.com/mengchunchen/p/7889585.html