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

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


          網站導航:
           
          主站蜘蛛池模板: 昌江| 龙州县| 城市| 克拉玛依市| 区。| 米泉市| 安义县| 旺苍县| 甘谷县| 汽车| 疏附县| 曲阜市| 隆子县| 大方县| 乌拉特中旗| 安多县| 嵩明县| 洛隆县| 寻甸| 锡林郭勒盟| 阳城县| 长武县| 福海县| 彩票| 毕节市| 九台市| 陇西县| 长兴县| 正宁县| 浦东新区| 怀来县| 巩义市| 阿坝县| 万载县| 瑞丽市| 科技| 潼南县| 彝良县| 通榆县| 塔河县| 霞浦县|