在Java语言里 ==和equals的区别
 
? ? ? ?雖然我還沒有踏入職場,但是學習Java以來做了很多的學習筆記,在我所看的各種書籍中對這個問題的回答可謂是各有不同,但是我個人感覺它們說的不是很全面,所以自己結合筆記又總結了一點,如果有不周到的地方,還請各位指教一下;
? ? ? ?現在很多人會說==和equals方法的不同之處是:==比較的是兩個對象的內存地址,而equals比較的是兩個對象的內容是否相同,當然這是相當的片面的,好一點的書籍里面對這兩個比較方法的說明大多是:equals 方法(是String類從它的超類Object中繼承的)被用來檢測兩個對象是否相等,即兩個對象的內容是否相等。?==用于比較引用和比較基本數據類型時具有不同的功能:比較基本數據類型,如果兩個值相同,則結果為true,而在比較引用時,如果引用指向內存中的同一對象,結果為true。這樣的說明本身來說是可行的,但是可能說的簡潔了一點,有一些特殊的情況還是需要加以說明的。
? ? ? ? 我要補充的一點就是對與自定義類型的相等比較應該如何說明,API里的類大部分都重寫了equals方法,沒有重寫的一般是自己寫的類,如果是你自己定義的一個類,比較自定義類用equals和==是一樣的,都是比較句柄地址,因為自定義的類是繼承于object,而object中的equals就是用==來實現的,你可以看源碼。
? ? ? ?所以在面試的時候在上面的基礎上最好加上自定義類型的情況:對于Object類來說,equals方法相當于 == ;即判斷的是兩個對象的地址是不是相同;對于繼承了Object類的子類來說,只有重寫了父類的equals方法的類才是判斷兩個對象的內容!
? ? ? 我想總結了上面良種的回答,才算是最完整圓滿的。最后,希望大家面試順利,找到自己心儀的工作。
總結
以上是生活随笔為你收集整理的在Java语言里 ==和equals的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Presto内存管理源码分析
 - 下一篇: 关于Arrays类中toArray方法的