1.从Object层次来说两者是相同的,都是比较内存地址,也就是说,都是比较两个引用是否指向同一个对象,是则返回true,否则返回false。
equals:
public boolean equals(Object obj){
return (this==obj);//比较两个对象的内存地址是否一致。
}
2.但很多类Overwrite了equals方法:如:
String类:
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;
}
此时,==比较地址,而equals比较的是内容。