大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 你應(yīng)該學會的Java源碼學習

你應(yīng)該學會的Java源碼學習

更新時間:2020-08-26 15:25:27 來源:動力節(jié)點 瀏覽2077次

equals源碼分析    

?/**
?????*?@param???obj???the?reference?object?with?which?to?compare.
?????*?@return??{@code?true}?if?this?object?is?the?same?as?the?obj
?????*??????????argument;?{@code?false}?otherwise.
?????*?@see?????#hashCode()
?????*?@see?????java.util.HashMap
?????*/
????public?boolean?equals(Object?obj)?{
????????return?(this?==?obj);
????}

上面簡單的三行代碼就是Object類中equals的源碼。主要的比較是兩個對象的地址。可以看到,方法體中equals比較其實也是“==”實現(xiàn)的。因此,下次在面試的過程中,你遇見問equals與“==”的區(qū)別的時候,你先給出結(jié)論。==是比較兩個對象地址的,沒有重寫equals方法的實體類使用equals也是比較地址的。

那么我們經(jīng)常用String中equals為什么是比較值的呢?接下來我們看一下String類中equals的源碼

String中equals方法源碼分析

java源碼學習    

/**?
?????*@param??anObject
?????*?????????The?object?to?compare?this?{@code?String}?against
?????*
?????*?@return??{@code?true}?if?the?given?object?represents?a?{@code?String}
?????*??????????equivalent?to?this?string,?{@code?false}?otherwise
?????*
?????*?@see??#compareTo(String)
?????*?@see??#equalsIgnoreCase(String)
?????*/
????public?boolean?equals(Object?anObject)?{
??????//可以看到,String中重新的equals方法在第一步就進行了地址比較,
??????//如果兩個字符串的地址相等,那么他們的值一定相等,就不用去進行下面的值比較了
????????if?(this?==?anObject)?{
????????????return?true;
????????}
??????//這個if表示,如果equals的方法體中不是一個String類型,那么也就直接返回為false
??????//比如“蜜蜂攻城獅
????????if?(anObject?instanceof?String)?{
????????????String?anotherString?=?(String)anObject;
????????????int?n?=?value.length;
????????????if?(n?==?anotherString.value.length)?{
????????????????char?v1[]?=?value;
????????????????char?v2[]?=?anotherString.value;
????????????????int?i?=?0;
????????????????while?(n--?!=?0)?{
????????????????????if?(v1[i]?!=?v2[i])
????????????????????????return?false;
????????????????????i++;
????????????????}
????????????????return?true;
????????????}
????????}
????????return?false;
????}

在我們實際編寫代碼的時候,特別是一些需要重寫equals方法的實體類的時候,那么我們需要進行equals的方法重寫,重寫equals方法需要遵守如下約定。翻譯如下

java源碼學習

(1)自反性:x.equals(x)必須返回true。

(2)對稱性:x.equals(y)與y.equals(x)的返回值必須相等。

(3)傳遞性:x.equals(y)為true,y.equals(z)也為true,那么x.equals(z)必須為true。

(4)一致性:如果對象x和y在equals()中使用的信息都沒有改變,那么x.equals(y)值始終不變。

(5)非null:x不是null,y為null,則x.equals(y)必須為false。

以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“你應(yīng)該學會的Java源碼學習”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 天天舔天天干 | 手机看片日韩欧美 | 8090成人午夜精品 | 欧美又粗又硬又大久久久 | 久久青草精品一区二区三区 | 国产成人亚洲综合 | 精品国产日韩久久亚洲 | 高清国产精品入口麻豆 | 久久黄视频 | 日韩毛片免费看 | 国产91免费在线观看 | 亚洲天码中文字幕第一页 | 亚洲天堂777 | 国产成人a毛片在线 | 狠狠色婷婷丁香综合久久韩国 | 亚洲一区二区三区久久久久 | 日韩 欧美 国产 亚洲 中文 | 成人午夜私人影院入口 | 久久亚洲不卡一区二区 | 欧美e片成 人 在线播放乱妇 | 亚洲 激情 | 涩涩精品 | 亚洲日韩欧美综合 | 中文字幕免费 | 欧美理论在线 | 在线激情网址 | 天天干天天操天天操 | 久久精品亚洲精品国产色婷 | 久久99一区 | 久久66久这里精品99 | 曰本女人一级毛片看一级毛 | 欧美日韩综合高清一区二区 | 国产精品2020在线看亚瑟 | 亚洲人成在线免费观看 | 日韩精品一区二区三区视频 | 国产精品亚洲精品爽爽 | 免费看欧美一级特黄a大片 免费看欧美一级特黄a大片一 | 精品偷拍模特露出丝袜在线 | 成人免费动作大片黄在线 | 97av在线播放 | 中文字幕在线高清 |