equals方法被調用時字符串和對象的順序
阿新 • • 發佈:2018-08-15
分享圖片 http 引用 string類型 當前 object 性能 審核 也不會 了。因此String類型中的equals方法是比較當前字符串與傳進來的字符串是否相同。
之前改的bug,一開始我先判斷sortKey不為空,然後再去判斷sortKey的值,見下圖,
代碼push後,同事審核後,叫我將sortKey和值得順序調換一下,說這樣就不用再判斷為空。這是改之後的代碼,見下圖,
問了幾個人,說是避免空指針異常,我說我前面已經對sortKey做了一個不為空判定,有人回答說雖然沒有錯,但是多判斷了一次,而且從代碼規範上看顯得多余。
問題來了,equals方法被調用時,誰在前誰在後,這裏面有什麽講究?經過查閱相關資料,整理了一些知識點。
equals方法在Object抽象類中比較的是兩個對象的引用地址是否相同,然而在String類型中,equals方法被重寫
如果將對象放在前面,調用equals方法時,若對象為空,會報空指針異常;
但若是將字符串放在前面,也就是相當於判斷這個字符串的值,即使它為空,也不會報錯。因此可以總結為:報不報錯主要看調用equals的對象是否為空。
所以在使用equals方法時,通常將字符串放在前面,比如"userName" .equals (對象),這樣就不用擔心對象為空了。先前寫的雖然對sortKey對象做了不為空的判定,一方面多判斷了一次,影響性能,另一反面也浪費了equals方法的使用。所以調換順序更為規範。
equals方法被調用時字符串和對象的順序