示例**
第一種(錯誤):
testequals }}
第二種(正確):
testequals }}
討論:這裡的**是想判斷乙個結果值是否是預期的結果,應該把被比較的值放在前面,期望值放在後面.相當於乙個主動方,乙個是被動方,為什麼呢?理由如下.
觀點:
這樣更符合思維邏輯:我是想檢測result是否等於de****t_invariable; 而不是de****t_invariable是否等於result.雖然結果一樣,但這涉及到乙個邏輯思維的轉換.在比較複雜的if語句中,這種思維轉換就會很麻煩,也只有在這種時候,才會體現出這種講究的好處.
對於臨界值null,多了一次檢測的好處,若result是null,則在第一種編碼中是不會報錯,結果永遠是false,而在第二種編碼下,程式就會丟擲nullpointerexception. null在很多時候都是需要特殊對待的
反例:對於兩個值都是從方法獲得臨時變數,就沒辦法上述實現觀點二.但是,無論如何,在大多數情況下,都會涉及到觀點一.
注意:對於方法的返回值,在正常情況下返回null值的做法,是件值得商榷的事情,需要返回null的情況是少之又少,這裡就不討論
討論equals方法的使用
示例 第一種 錯誤 testequals 第二種 正確 testequals 討論 這裡的 是想判斷乙個結果值是否是預期的結果,應該把被比較的值放在前面,期望值放在後面.相當於乙個主動方,乙個是被動方,為什麼呢?理由如下.觀點 這樣更符合思維邏輯 我是想檢測result是否等於de t invari...
和equals方法的區別和使用
1.當使用 的時候,只有當兩個引用變數指向同乙個物件時,才會返回true 2.當使用equals方法的時候,只需要滿足兩個變數所指向的內容相同即可 3.展示如下 package com.object.test public class objectequalstest 4.jvm常量池保證相同的字串...
equals方法的特性
一 自反性 reflexive obj.equals obj true 二 對稱性 symmetric obja.equals objb true,那麼也有objb.equals obja true 三 傳遞性 transitive obja.equals objb true,objb.equals...