0610.實例相等(Equals)判斷

Equals

對於判斷二者間的相等關係, 相較於 Java, Scala 對初學者甚至進階者, 可較直觀的學習與使用, 且也較易在教育學生時, 簡化與理解.


Scala 相等性


在 Scala 中一切皆為物件, 並無如同 Java Primitive(原始型別)的存在必要, 並使用較直觀的 == 來表達比較二個值的相同, 使用 eq 來判斷二者間的參考(reference)相等性.
  • ==
    • ==( )
    • default: value
  • eq
    • eq( )
    • Reference




Java 相等性


  • ==
    • Primitive type -> Value
    • Instance -> Reference Heap address
  • Object.equals( )
    • default: value
    • Instance , but @Override, and  hashCode( )

根據 Java SE API 文件說明中的記載,

Object.equals( )

public boolean equals(Object obj)
指示其他某個物件是否與此物件「相等」。

equals 方法在非空(null)物件參考上實作相等關係:

  • 自返性:對於任何非空(null)參考值 xx.equals(x) 都應返回 true
  • 對稱性:對於任何 null 參考值 xy,當且僅當 y.equals(x) 返回 true 時,x.equals(y) 才應返回 true
  • 傳遞性:對於任何 null 參考值 xyz,如果 x.equals(y) 返回 true,並且 y.equals(z) 返回 true,那麼 x.equals(z) 應返回 true
  • 一致性:對於任何 null 參考值 xy,多次調用 x.equals(y) 始終返回 true 或始終返回 false前提是物件上 equals 比較中所用的資訊沒有被修改
  • 對於任何 null 參考值 xx.equals(null) 都應返回 false

Object 類別的 equals 方法實作物件上差別可能性最大的相等關係;即,對於任何 null 參考值 xy,當且僅當 xy 參考同一個物件時,此方法才返回 truex == y 具有值 true)。

注意:當此方法被覆寫時,通常有必要覆寫 hashCode 方法,以維護 hashCode 方法的常規協定,該協定宣告相等物件必須具有相等的雜湊碼。

參數:
obj - 要與之比較的參考物件。
返回:
如果此物件與 obj 參數相同,則返回 true;否則返回 false
另請參見:
hashCode(), Hashtable

Comments