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的工作室 閱讀(502) 評論(0)  編輯  收藏 所屬分類: java

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 华阴市| 承德市| 简阳市| 冕宁县| 柘城县| 开远市| 东港市| 新疆| 临武县| 凭祥市| 靖边县| 阿拉善盟| 霍林郭勒市| 滕州市| 布拖县| 保康县| 汉寿县| 鄂尔多斯市| 孙吴县| 鄯善县| 枣庄市| 贵南县| 昭平县| 九台市| 宣威市| 瑞金市| 中西区| 鄄城县| 财经| 上杭县| 阿克陶县| 尉氏县| 大渡口区| 科技| 无为县| 奉节县| 合川市| 临高县| 安庆市| 缙云县| 邵阳市|