關于.hashcode()和equals()的問題

                       今天看代碼的時候忽然發現有些類會重寫equals方法和hashcode方法以及相應的toString方法,對于我來說完全不明

          白為什么要這么做,我查了下資料,終于找到了原因!

                      equals是Object類就有的方法是用來檢測一個對象是否等于另外一個對象,在Object類中,這個方法將判斷兩個對象

          是否具有相同的引用。對于需要檢測兩個對象狀態的時候,那么就要重新去實現一下這個方法了。比如說2個雇員對象如果

          ID相同,那么他們肯定是相同的。那么我僅僅只需要判斷ID就好了,那么我就重寫咯,o(∩_∩)o。

                      而且JAVA語言規范對equals方法還具有一下特性:

                      1.自反性:對于任何非空引用x,x.equals(x)應該返回true;

                      2.對稱性:對于任何引用x,y,如果x.equals(y)返回true,那么y.equals(x)也應該返回同樣的結果;

                      3.傳遞性:對于任何引用x,y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也應該返回true;

                      4.一致性:如果x和y引用的對象沒有發生變化,那么反復調用x.equals(y)應該返回同樣的結果。

                      5.對于任意非空引用x,x.equals(null)應該返回true.

                      然后有一系列的對比方式來解決繼承和超類的比較

                     接下來就是關于hashcode了對于每一個對象來說都有它相對應唯一的hashcode,也叫做散列碼,它也作為對象在內存當

          中的存儲地址。那么你override了equals方法,你也應該override掉hashcode方法,以便用戶可以將對象插入到散列表中

          (hashmap).

                        歡迎喜歡旅游的朋友來這里參觀 

                   


          posted on 2008-04-17 23:22 Cloud kensin 閱讀(247) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          相冊

          相冊

          搜索

          最新評論

          主站蜘蛛池模板: 基隆市| 普兰县| 孟村| 普兰店市| 门头沟区| 榕江县| 绩溪县| 辰溪县| 堆龙德庆县| 宜阳县| 吴堡县| 榕江县| 江川县| 和田市| 南充市| 鹤壁市| 五莲县| 无棣县| 嘉兴市| 隆化县| 汉中市| 寿宁县| 新宾| 婺源县| 陇南市| 临海市| 望谟县| 白城市| 潞西市| 依安县| 蒲江县| 平遥县| 虞城县| 商南县| 新巴尔虎左旗| 虹口区| 新化县| 钦州市| 平利县| 商南县| 射洪县|