posts - 3,comments - 3,trackbacks - 0
               java中有两种相等的判断-----“==”和“equals()方法”。大部分书上都会告诉我们,“==”是判断两个对象的引用是否相等,而“equals()”是判断两个对象是否相等。其中“==”很好理解,在此我就不再赘述了。我主要想说的是关于“equals()”,在java的Object类中“equals()”的实现如下:

  
1    public boolean equals(Object obj) {
2          return (this == obj);
3    }

         我们可以看到在Object中“equals()”的实现指示简单的使用了“==”也就是之判断了,两个对象的引用相等。这也就是为什么我们在使用“equals()”时必须重写这个方法的原因了。

      在jdk的帮助文档中,对于“equals()”和“HashCode()”有这样的说法,如果两个对象使用equals()返回为true,则使用HashCode()必然返回的值必然相等,反之则不一定啊。

     为什么呢?其实举个简单的例子,我们有很多桶,每个桶都可以放很多对象,那么HashCode()得到的值就是每个桶的编号,这样说也许您就明白了为什么jdk会有这样的说法了。至于为什么会有这样的设计,学过数据结构的朋友一定知道一些查找的方法吧,其中二分法就是一种高效的查找方法吧。那么HashCode也就是个“多分法”吧。

 
            
posted on 2008-02-08 16:05 alec的工作室 阅读(488) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: