equals与==

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比较的是内容。

posted @ 2011-12-11 22:10  残星  阅读(221)  评论(0编辑  收藏  举报