首页 > Java开发 > 关于Java的对象equals方法

关于Java的对象equals方法

不是所有的equals都是比较整个对象的。

#1. 普通Object类:

先看源码:

[java] view
  1. public boolean equals(Object obj) {  
  2. turn (this == obj);  
  3.  }  


看到了没,用“==”,比较的是对象引用,也就是地址。假如两个对象传入的参数一样,但是都用new去创建,地址就不同了,那么用equals返回的就是false。

#2. String类:

先看源码:

[java] view plainc
  1.    public boolean equals(Object anObject) {  
  2. if (this == anObject) {  
  3.     return true;  
  4. }  
  5. if (anObject instanceof String) {  
  6.     String anotherString = (String)anObject;  
  7.     int n = count;  
  8.     if (n == anotherString.count) {  
  9.     char v1[] = value;  
  10.     char v2[] = anotherString.value;  
  11.     int i = offset;  
  12.     int j = anotherString.offset;  
  13.     while (n-- != 0) {  
  14.         if (v1[i++] != v2[j++])  
  15.         return false;  
  16.     }  
  17.     return true;  
  18.     }  
  19. }  
  20. return false;  
  21.    }  


比较的是内容,所以只要内容一样,用new去创建的两个String对象,调用equals返回true。

#3. Integer类

先看源码:

[java] view plainc
  1.    public boolean equals(Object obj) {  
  2. if (obj instanceof Integer) {  
  3.     return value == ((Integer)obj).intValue();  
  4. }  
  5. return false;  
  6.    }  


一样是比较内容。


本文固定链接: http://www.devba.com/index.php/archives/4287.html | 开发吧

报歉!评论已关闭.