<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    以下總結自effective java.
    實現equals方法的過程如下:
    1 使用==運算符來判斷是否引用同一個對象。
    2 使用instance of操作符來判斷參數是否是正確的類型。
    3 將實參cast成正確的類型。
    4 對于每個關鍵屬性,進行比較:
    對于非float或double的primitive類型,使用==判斷等價性;
    對于floa類型,先使用Float.floatToIntBits轉換成int類型,然后使用==比較int類型的值;
    對于double類型,先使用Double.doubleToLongBits轉換成long類型,然后使用==比較long類型;
    對于對象引用,遞歸的調用equals方法。
    對于數組類型,對其中的元素進行上述的操作,或者使用Arrays.equals方法(version 1.5)。
    為了避免NPE,可以使用
    field == null ? o.field == null : fleld.equals(o.field);

    重寫hashCode方法如下:
    1 把某個非零常數值,例如17,保存在int變量result中;
    2 對于對象中每一個關鍵域f(指equals方法中考慮的每一個域),計算散列碼c:
    2.1 boolean型,計算(f ? 0 : 1);
    2.2 byte,char,short型,計算(int);
    2.3 long型,計算(int) (f ^ (f>>>32));
    2.4 float型,計算Float.floatToIntBits(f);
    2.5 double型,計算Double.doubleToLongBits(f)得到一個long,再執行[2.3];
    2.6 對象引用,遞歸調用它的hashCode方法;
    2.7 數組域,對其中每個元素按照上面的規則計算hash code。
    3 將上面計算得到的散列碼保存到int變量c,然后執行 result=37*result+c;
    4 返回result。

    posted on 2011-11-10 18:25 calvin 閱讀(401) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 日韩精品亚洲专区在线观看| 亚洲经典在线中文字幕| 亚洲欧洲∨国产一区二区三区| 亚洲美女视频网站| 美女尿口扒开图片免费| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 四虎永久成人免费影院域名| 人人狠狠综合久久亚洲88| 亚洲欧美成人av在线观看| 男人都懂www深夜免费网站| 国产嫩草影院精品免费网址| 亚洲成人在线免费观看| 国精产品一区一区三区免费视频| 免费涩涩在线视频网| 亚洲婷婷综合色高清在线| 久久久高清免费视频| 亚洲va无码va在线va天堂| 免费人成动漫在线播放r18| 成人性生免费视频| 亚洲酒色1314狠狠做| 99视频全部免费精品全部四虎| 亚洲AV一宅男色影视| 亚洲一级毛片免费观看| 亚洲精品天天影视综合网| baoyu122.永久免费视频| 亚洲M码 欧洲S码SSS222| 亚洲国产av玩弄放荡人妇| 免费黄色福利视频| 亚洲av无码一区二区三区天堂| 日韩免费a级毛片无码a∨| 亚洲国产精品人久久电影| 日本免费电影一区| 亚洲啪AV永久无码精品放毛片| 免费人成在线观看播放国产| 亚洲a∨国产av综合av下载 | 亚洲国产成人久久综合碰碰动漫3d| 国产一卡二卡四卡免费| 特级毛片免费观看视频| 亚洲黄色片在线观看| 成在线人永久免费视频播放| 少妇性饥渴无码A区免费|