久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java如何比較兩個對象是否相等

146次閱讀
沒有評論

共計 980 個字符,預計需要花費 3 分鐘才能閱讀完成。

在 Java 中,可以使用 equals() 方法來比較兩個對象是否相等。該方法是 Object 類的一個方法,所有的類都繼承自 Object 類。

默認情況下,equals()方法比較的是兩個對象的引用是否相等,即它們是否指向同一個內存地址。如果想要比較對象的內容是否相等,需要在類中重寫 equals() 方法,一般也需要同時重寫 hashCode() 方法。

以下是一個重寫 equals() 方法的示例:

public class MyClass {private String name;
    private int age;

    // 構造函數和其他方法省略

    @Override
    public boolean equals(Object obj) {if (this == obj) {return true;
        }
        if (obj == null || getClass() != obj.getClass()) {return false;
        }
        MyClass myObj = (MyClass) obj;
        return age == myObj.age && Objects.equals(name, myObj.name);
    }

    @Override
    public int hashCode() {return Objects.hash(name, age);
    }
}

在這個例子中,我們重寫了 equals() 方法來比較兩個對象的 name 和 age 屬性是否相等。我們使用 getClass() 方法來檢查兩個對象是否屬于同一個類,然后再逐個比較屬性的值。如果兩個對象的屬性值都相等,我們認為它們是相等的。

需要注意的是,equals()方法必須遵循以下幾個規則:

  • 自反性:x.equals(x)必須返回 true。
  • 對稱性:如果 x.equals(y) 返回 true,那么 y.equals(x) 也必須返回 true。
  • 傳遞性:如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 也必須返回 true。
  • 一致性:如果兩個對象沒有發生變化,那么多次調用 x.equals(y) 應該始終返回相同的結果。
  • 非空性:x.equals(null)必須返回 false。

另外,為了確保正確性,通常還需要重寫 hashCode() 方法。在上面的示例中,我們使用了 Objects.hash() 方法來生成 hashCode 值,它會根據對象的屬性生成一個唯一的哈希碼。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-16發表,共計980字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 措勤县| 印江| 米脂县| 西城区| 松滋市| 大理市| 商丘市| 淮北市| 浑源县| 隆昌县| 东海县| 拜城县| 桂东县| 天峻县| 桓台县| 湟源县| 慈溪市| 梁河县| 元氏县| 新昌县| 河池市| 彭阳县| 沧源| 黄浦区| 高平市| 东至县| 兴国县| 宜章县| 博白县| 东明县| 枝江市| 虹口区| 榆中县| 咸阳市| 广水市| 广德县| 黎平县| 晋江市| 阳山县| 静安区| 渝北区|