關(guān)于.hashcode()和equals()的問題

                       今天看代碼的時(shí)候忽然發(fā)現(xiàn)有些類會(huì)重寫equals方法和hashcode方法以及相應(yīng)的toString方法,對(duì)于我來說完全不明

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

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

          是否具有相同的引用。對(duì)于需要檢測兩個(gè)對(duì)象狀態(tài)的時(shí)候,那么就要重新去實(shí)現(xiàn)一下這個(gè)方法了。比如說2個(gè)雇員對(duì)象如果

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

                      而且JAVA語言規(guī)范對(duì)equals方法還具有一下特性:

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

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

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

                      4.一致性:如果x和y引用的對(duì)象沒有發(fā)生變化,那么反復(fù)調(diào)用x.equals(y)應(yīng)該返回同樣的結(jié)果。

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

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

                     接下來就是關(guān)于hashcode了對(duì)于每一個(gè)對(duì)象來說都有它相對(duì)應(yīng)唯一的hashcode,也叫做散列碼,它也作為對(duì)象在內(nèi)存當(dāng)

          中的存儲(chǔ)地址。那么你override了equals方法,你也應(yīng)該override掉hashcode方法,以便用戶可以將對(duì)象插入到散列表中

          (hashmap).

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

                   


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


          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(4)

          隨筆分類

          相冊

          相冊

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 张家港市| 哈密市| 渝中区| 女性| 蒲城县| 民权县| 司法| 溧水县| 林芝县| 香格里拉县| 乌鲁木齐县| 襄樊市| 邻水| 成都市| 商洛市| 石柱| 拜泉县| 鄂尔多斯市| 沅陵县| 商河县| 庐江县| 临汾市| 乌鲁木齐县| 柞水县| 安化县| 炉霍县| 涿鹿县| 贵港市| 定襄县| 资兴市| 镇坪县| 南陵县| 丹巴县| 新宾| 莆田市| 钟山县| 柯坪县| 遵化市| 政和县| 淮北市| 龙井市|