其实这个问题非常简单,我们想想 == 和 equals() 哪个先诞生的呢?
肯定是 == 先诞生的。==表示相等,如果是基本类型,就代表值相等;如果是引用类型,就代表引用相同,即它们在内存中的存放地址相同。
后来才有了equals(),其实equals()内部也是 == ,只不过像String、Integer、Date等类内部重写了eqauls()方法,因此String这些类的equals()比较的是两个对象的内容是否相同。
String重写了equals()方法:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (!COMPACT_STRINGS || this.coder == aString.coder) {
return StringLatin1.equals(value, aString.value);
}
}
return false;
}
日常工作中经常用到比较字符串内容是否相同,这个比较的是String类型,记得要用equals()呦。