在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

java的equals怎么用

科技綠洲 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2023-11-17 16:56 ? 次閱讀

Java的equals()方法是Object類(lèi)中的方法,用于比較對(duì)象的內(nèi)容是否相等。在默認(rèn)情況下,equals()方法比較的是對(duì)象的引用,即判斷兩個(gè)對(duì)象是否是同一個(gè)實(shí)例。但是在很多情況下,我們希望比較的是對(duì)象的屬性是否相等,這就需要重寫(xiě)equals()方法。

在Java中,equals()方法的默認(rèn)實(shí)現(xiàn)如下:

public boolean equals(Object obj) {
return (this == obj);
}

上述代碼中,equals()方法將當(dāng)前對(duì)象和傳入的對(duì)象進(jìn)行引用比較,如果兩個(gè)對(duì)象的引用相同,則返回true,否則返回false。但是這種引用比較并不滿足我們的實(shí)際需求,因?yàn)槲覀兏P(guān)心對(duì)象的屬性是否相等。

下面是重寫(xiě)equals()方法的一般步驟:

  1. 首先,需要判斷傳入的對(duì)象是不是當(dāng)前類(lèi)的實(shí)例,否則直接返回false。
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
// ...
}
  1. 然后,將傳入的對(duì)象轉(zhuǎn)為當(dāng)前類(lèi)的實(shí)例。
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}

MyClass myObj = (MyClass) obj;
// ...
}
  1. 接下來(lái),比較兩個(gè)對(duì)象的屬性是否相等。這里需要根據(jù)具體情況來(lái)判斷哪些屬性應(yīng)該被比較。
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}

MyClass myObj = (MyClass) obj;

// 比較屬性是否相等
if (this.field1 != myObj.field1) {
return false;
}
if (!this.field2.equals(myObj.field2)) {
return false;
}
// ...

return true;
}

在上述代碼中,我們比較了兩個(gè)對(duì)象的field1和field2屬性是否相等,如果不相等則返回false。

  1. 最后,要確保equals()方法滿足以下特性:
  • 自反性:對(duì)于任何非null的引用值x,x.equals(x)應(yīng)該返回true。
  • 對(duì)稱(chēng)性:對(duì)于任何非null的引用值x和y,如果x.equals(y)返回true,則y.equals(x)也應(yīng)該返回true。
  • 傳遞性:對(duì)于任何非null的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也應(yīng)該返回true。
  • 一致性:對(duì)于任何非null的引用值x和y,如果對(duì)象中的屬性沒(méi)有發(fā)生變化,那么多次調(diào)用x.equals(y)應(yīng)該返回相同的結(jié)果。
  • 對(duì)于任何非null的引用值x,x.equals(null)應(yīng)該返回false。

綜上所述,重寫(xiě)equals()方法時(shí)需要按照上述步驟來(lái)進(jìn)行,確保比較的是對(duì)象的屬性相等性,并滿足equals()方法的特性。這樣,我們就可以根據(jù)自己的需求來(lái)定義兩個(gè)對(duì)象是否相等了。

public class MyClass {
private int field1;
private String field2;

// 構(gòu)造方法、Getter和Setter方法等...

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}

MyClass myObj = (MyClass) obj;

// 比較屬性是否相等
if (this.field1 != myObj.field1) {
return false;
}
if (!this.field2.equals(myObj.field2)) {
return false;
}

return true;
}

// ...
}

這樣,我們就可以根據(jù)重寫(xiě)后的equals()方法來(lái)判斷兩個(gè)對(duì)象是否相等了。

MyClass obj1 = new MyClass(1, "hello");
MyClass obj2 = new MyClass(1, "hello");

System.out.println(obj1.equals(obj2)); // 輸出:true

需要注意的是,當(dāng)我們重寫(xiě)equals()方法時(shí),通常也需要重寫(xiě)hashCode()方法。因?yàn)楦鶕?jù)Java規(guī)范,如果兩個(gè)對(duì)象通過(guò)equals()方法相等,那么它們的hashCode()方法的返回值也應(yīng)該相等。否則,它們的行為在使用基于散列的集合類(lèi)(例如HashMap、HashSet等)時(shí)可能是不正確的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2986

    瀏覽量

    107035
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70305
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Java技術(shù):046 教學(xué)視頻 hashCode和equals方法#Java

    JAVA
    學(xué)習(xí)電子
    發(fā)布于 :2022年11月16日 09:27:08

    java rules下載/java規(guī)范中文版

    對(duì)于希望精通Java編程語(yǔ)言復(fù)雜細(xì)節(jié)的應(yīng)用程序員來(lái)說(shuō),本書(shū)是一本全面的參考書(shū),內(nèi)容詳盡,深入淺出。本書(shū)徹底地講述了Java編程語(yǔ)言和Java虛擬機(jī)(JVM)的核心細(xì)節(jié),使讀者能夠有效地深入
    發(fā)表于 06-23 18:16

    詳解java代碼優(yōu)化方法

    使用LinkedList27. 不要讓public方法中有太多的形參28. 字符串變量和字符串常量equals的時(shí)候?qū)⒆址A繉?xiě)在前面29. 在java中if (i == 1)和if (1 == i
    發(fā)表于 04-02 15:43

    Hanlp分詞實(shí)例:Java實(shí)現(xiàn)TFIDF算法

    下):代碼實(shí)現(xiàn)package edu.heu.lawsoutput;import java.io.BufferedReader;import java.io.BufferedWriter;import
    發(fā)表于 11-14 10:03

    如何用java映射創(chuàng)建java對(duì)象和調(diào)用java對(duì)象呢

    java是一種解析語(yǔ)言,java程序是通過(guò)java虛擬機(jī)解析.class的方式運(yùn)行起來(lái)。因此,java中就存在java映射的概念。下面介紹如
    發(fā)表于 04-11 14:43

    java語(yǔ)言編寫(xiě)的智能五子棋源程序

    java語(yǔ)言編寫(xiě)的智能五子棋源程序
    發(fā)表于 10-30 10:31 ?98次下載
    <b class='flag-5'>用</b><b class='flag-5'>java</b>語(yǔ)言編寫(xiě)的智能五子棋源程序

    JAVA語(yǔ)言實(shí)現(xiàn)RSA公鑰密碼算法

    JAVA語(yǔ)言實(shí)現(xiàn)RSA公鑰密碼算法:本文闡述了公開(kāi)密鑰密碼體制RSA算法的原理及實(shí)現(xiàn)技術(shù)。并在此基礎(chǔ)上,給出了JAVA語(yǔ)言實(shí)現(xiàn)的RSA算法源代碼。關(guān)鍵詞:ILSA體制;公鑰;密鑰
    發(fā)表于 02-10 10:27 ?58次下載

    JAVA版聊天軟件源代碼

    JAVA版聊天軟件源代碼 一款JAVA制作開(kāi)發(fā)的小型聊天軟件,里面附有安裝程序和JAVA源代碼。.rar
    發(fā)表于 03-11 14:21 ?0次下載

    java與c之間的數(shù)據(jù)交互

    最近作一個(gè)tiemsten數(shù)據(jù)庫(kù)的項(xiàng)目,用到了jni技術(shù)。在這個(gè)項(xiàng)目中,我們java來(lái)寫(xiě)界面和業(yè)務(wù)邏輯,c語(yǔ)言寫(xiě)數(shù)據(jù)庫(kù)odbc訪問(wèn)。單純的odbc其實(shí)沒(méi)有什么難的,但是在java
    發(fā)表于 11-27 10:22 ?1857次閱讀

    Java11GC 性能基準(zhǔn)測(cè)試報(bào)告 Java8與Java11對(duì)比測(cè)試

    當(dāng)前使用量最大的 Java 版本是 8,所以測(cè)試者 Java 8 與 Java 11 進(jìn)行對(duì)比測(cè)試。GC 是影響 Java 性能的關(guān)鍵因素
    發(fā)表于 02-01 01:46 ?3831次閱讀

    SpringBoot正式棄Java8 Java17將成為未來(lái)主流版本

    Java基線從 Java 8 提升到了 Java 17 從Java EE APIs 到 Jakarta EE 這個(gè)支持被移除 依賴(lài)升級(jí) 未來(lái)計(jì)劃 參考資料 2022年1月20日,Spr
    的頭像 發(fā)表于 10-09 18:03 ?3861次閱讀

    Java中的計(jì)時(shí)攻擊

    執(zhí)行時(shí)間反推出密碼的一些區(qū)域 。 簡(jiǎn)單理解,就是破解密碼的人,通過(guò)不同的輸入策略組合嘗試去驗(yàn)證密碼,得到不同的執(zhí)行時(shí)間,從而反推出密碼的區(qū)域,降低破解密碼的難度。 下面可以使用Java簡(jiǎn)單描述一下。 我們看一下Java中的String
    的頭像 發(fā)表于 09-25 15:29 ?977次閱讀
    <b class='flag-5'>Java</b>中的計(jì)時(shí)攻擊

    Javaequals 方法的實(shí)現(xiàn)方式

    Javaequals 方法用于比較兩個(gè)對(duì)象是否相等。在默認(rèn)情況下,Object 類(lèi)中的 equals 方法實(shí)現(xiàn)是比較兩個(gè)對(duì)象的引用是否相等,即比較內(nèi)存地址是否相同。然而,對(duì)于自定義對(duì)象,在很多
    的頭像 發(fā)表于 11-17 16:53 ?1391次閱讀

    javaequals()方法的注意事項(xiàng)

    Java中的equals()方法是用于比較兩個(gè)對(duì)象是否相等的方法。這個(gè)方法是在Object類(lèi)中定義的,因此所有的Java類(lèi)都默認(rèn)地繼承了equals()方法。然而,
    的頭像 發(fā)表于 11-17 16:59 ?1190次閱讀

    java中的equals是什么意思

    Java中,equals是一個(gè)用于比較對(duì)象是否相等的方法。該方法來(lái)自于Object類(lèi),所有的Java類(lèi)都繼承了該方法。equals方法的默認(rèn)行為是比較對(duì)象的內(nèi)存地址,即判斷兩個(gè)對(duì)象是
    的頭像 發(fā)表于 11-17 17:07 ?3295次閱讀
    主站蜘蛛池模板: 99久久综合 | 手机在线观看你懂得 | 国产在线黄 | 中文字字幕码一二区 | 在线观看你懂的视频 | 福利社藏经阁 | 国产午夜视频在永久在线观看 | 国产精品自在线天天看片 | 欧美满足你的丝袜高跟ol | 中文字幕一区二区三区免费视频 | 高清性色生活片久久久 | 国产精品1区2区3区在线播放 | 2018国产一级天天弄 | 李老汉和小花的性生生活 | 国产精品成人四虎免费视频 | 国产美女一级ba大片免色 | 最新精品 | 欧美一区精品 | 性欧美大战久久久久久久 | 日本亚洲精品色婷婷在线影院 | 婷婷久久精品 | 九九九精品视频免费 | 精品亚洲成a人片在线观看 精品亚洲大全 | 色噜噜狠狠成人中文小说 | 色噜噜狠狠大色综合 | www.激情网.com| 特黄特a级特别特级特毛片 特黄特色大片免费播放路01 | 色综合久久网女同蕾丝边 | 国内真实下药迷j在线观看 国内自拍 亚洲系列 欧美系列 | 国产精品久久久久久久人热 | 天天干夜夜想 | 精品卡1卡2卡三卡免费视频 | 欧美三级视频在线 | 97视频碰碰车 | 九色福利| 欧美极品第一页 | 成年男人永久免费看片 | 天天狠天天透天干天天怕处 | 性夜影院爽黄a爽免费视频 性瘾高h姚蕊全文免费阅读 | 欧美色图中文字幕 | 国产精品久久久福利 |