关于 “==” 和 “equals” : java
1) 对于Object类来讲 “==” 和 “equals” 是等价的,判断引用是否指向同一个对象。this
API 实现: public boolean equals(Object obj) {spa
return (this == obj);code
}对象
2)对于String类来讲,“equals” 方法重写了Object类的“equals”,
it
能够用来比较两个String类型的字面值是否相等,而不仅是判断是否指向同一个对象。class
API实现: 引用
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; }
3)对于其它没有重写父类Object中equals方法的类来讲,方法
“==” 和 "equals"同样。而对于有重写的equals的类来讲,tab
就要看具体的实现了。
因此不能笼统地说:“==”是用来比较引用是否相等,"equals"用来比较值是否相等。