equals()方法个人理解

《think in java》中有这么一段话:

如果想比较两个对象的实际内容是否相同,又该如何操作呢?此时,必须使用所有对象都使用的特殊方法equals()。但这个方法不适用于"基本类型",基本类型直接使用==和!=即可。如:

Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(ne.equals(n2));

正如我们预计的那样,此时得到的结果是true。但事实上并不总是这么简单!假设您创建了自己的类,像下面这样:
class Value{
int i;
}
public class Test{

      public static void main(String[] args){
             Value v1 = new Value();
            Value v2 = new Value();
             System.out.println(v1.equals(v2));
    }
}
此时的结果又变回了false!

这是由于equals()的默认行为是比较引用。所以除非在自己的新类中重载equals()方法,否则不可能表现出我们希望的行为。

大多数Java类库都实现了用来比较对象内容的equals()方法,而非比较对象引用的equals()方法。

个人理解:equals()默认行为是比较引用,只是现在绝大多数Java类库都实现了用来比较对象内容的equals()方法,而并没有实现比较对象引用的equals()方法。所以现在说equals()比较的是内容,如果自己的类实现比较对象引用的equals()方法,也可以说equals()比较对象的引用,只是实现问题。

你可能感兴趣的:(equals()方法个人理解)