Chinaunix首页 | 论坛 | 博客
  • 博客访问: 898276
  • 博文数量: 282
  • 博客积分: 10843
  • 博客等级: 上将
  • 技术积分: 2435
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-01 15:23
文章分类

全部博文(282)

文章存档

2013年(1)

2012年(18)

2011年(14)

2010年(30)

2009年(48)

2008年(55)

2007年(55)

2006年(61)

分类: Java

2006-11-16 21:48:28

equals()是Object类的一个方法,而Object是所有类的父类,因此实际上所有类都会继承到equals()方法。

equals()方法在java.lang.Object中的说明为:

public boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation:

It is reflexive: for any reference value x, x.equals(x) should return true.

It is symmetric: for any reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.

It is transitive: for any reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.

It is consistent: for any reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the object is modified.

For any non-null reference value x, x.equals(null) should return false.

The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any reference values x and y, this method returns true if and only if x and y refer to the same object (x==y has the value true).

其源码为: 


public boolean equalss(Object obj) {
return (this = = obj);
}

 

由以上的注释可知Object中的equals()方法和 = =操作符是完成了相同的比较功能,都是对对象的引用进行了比较。

String类的equals()方法又是如何实现的呢?源代码:


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;
}

说明为:

public boolean equals(Object anObject)

Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.

因此String中的equals()方法比较的是String对象中的内容,而不是它们的引用的值。

阅读(1009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~