equals()是超类Object的一个基本方法。
public boolean equals(Object obj) { return (this == obj); }
当类有自己的“逻辑相等”的概念,而且超类还没有覆盖equals来实现期望的行为。
默认情况下也就是从超类Object继承而来的equals方法与‘==’是完全等价的,比较的都是对象的内存地址,但我们可以重写equals方法,使其按照我们的需求的方式进行比较,如String类重写了equals方法,使其比较的是字符的序列,而不再是内存地址。
equals必须覆盖hashCode方法,否则会违反Object.hashCode的通用约定,从而导致该类无法结合所有的基于散列的集合一起正常工作。