==和equals()从Object类层次来看,都是比较内存地址(即,两个地址是否指向同一块存储区)。因为equals()的内部实现就是==。
下面是Object类中的equals()方法实现。
public boolean equals(Object obj) {
return (this==obj);
}
但是大多数java类都重写了Object类的equals(),使其比较存储的内容,java中String类就是非常典型的这种做法。
下面是String类equals()方法实现。
所以我们常说,==永远比较的是内存地址是否相等,equals()比较的是存储内容是否相等。