国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java中的equals方法

這篇具有很好參考價(jià)值的文章主要介紹了Java中的equals方法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、"=="運(yùn)算符

"=="是一個(gè)比較運(yùn)算符。

  • "=="既可以判斷基本類型,又可以判斷引用類型。
  • "=="如果判斷基本類型,判斷的是值是否相等。eg: int i=10; double d=10.0
  • "=="如果判斷引用類型,判斷的是地址是否相等,即判定是不是同一個(gè)對象。

二、equals方法

  • equals是object類中的方法,只能用于判斷引用類型。
  • equals方法默認(rèn)判斷的是地址是否相等,子類中往往重寫該方法,用于判斷內(nèi)容是否相等。比如String和Integer類中的equals源代碼。

Object類中的equals方法的源碼:

Object類中的equals方法默認(rèn)就是比較對象地址是否相同。

    public boolean equals(Object obj) {
        return (this == obj);
    }
"hello".equals("abc");

解釋:this指的就是當(dāng)前對象,this是指equals方法是誰調(diào)用的,上面的hello調(diào)用的equals,所以this指的是字符串hello,而==右邊的obj對象,是傳入的abc。

三、重寫equals方法練習(xí)

練習(xí)一:

package object;
/*
判斷兩個(gè)person對象的內(nèi)容是否相等
如果兩個(gè)person對象的各個(gè)屬性值都一樣,則返回true,反之返回false
 */
public class EqualsExercise {
    public static void main(String[] args) {
        Person person1 = new Person("jack", 10, '男');
        Person person2 = new Person("jack", 10, '男');
        System.out.println(person1.equals(person2));   //輸出結(jié)果是true
    }
}

class Person {
    private String name;
    private int age;
    private char gender;

    //重寫Object的equals方法
    public boolean equals(Object obj) {
        //如果比較的兩個(gè)對象是同一個(gè)對象,則直接返回true
        if (this == obj){   //this就代表調(diào)用equals方法的那個(gè)對象,obj就是方法里面的實(shí)參
            return true;
        }
        //類型判斷
        if (obj instanceof Person){  //obj是Person,我們才比較
            //進(jìn)行 向下轉(zhuǎn)型(即obj轉(zhuǎn)成Person); 因?yàn)槲倚枰玫給bj的各個(gè)屬性,如果不轉(zhuǎn)型,拿不到
            Person p = (Person) obj;
            return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender;
        }
        //如果不是person,則直接返回false;總不能拿一個(gè)人跟一個(gè)狗比
        return false;
    }


    public Person(String name, int age, char gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }
}

Tips:

instanceof的用法:result = object instanceof class

instanceof左邊是對象,右邊是類;當(dāng)對象是右邊類或子類所創(chuàng)建對象時(shí),返回true;否則,返false。

練習(xí)二:

java equals,JavaSE筆記,java,servlet,jvm

?解釋:文章來源地址http://www.zghlxwxcb.cn/news/detail-779680.html

  • sout1:p1和p2都是對象,因此==判斷的是地址是否相同,false
  • sout2:p1.name和p2.name都是字符串,因此這里的equals調(diào)用的是String類的中的equals方法,判斷的是內(nèi)容是否相同,true
  • sout3:p1和p2都是對象,因此這里的equals是Object類中的equals方法,判斷的是地址是否相同,false
  • sout4:s1和s2都是String類的對象,因此這里的equals調(diào)用的是String類的中的equals方法,判斷的是內(nèi)容是否相同,true
  • sout5:s1和s2都是對象,因此==判斷的是地址是否相同,false

練習(xí)三:

java equals,JavaSE筆記,java,servlet,jvm

?解釋:

  • sout1:65和65.0是相等的,true
  • sout2:字符的本質(zhì)還是數(shù)字,查閱AscII表,A就是12,true
  • sout3:沒啥說的
  • sout4:沒啥說的
  • sout5:沒啥說的
  • sout6:都不是同一種類型,==直接編譯錯(cuò)誤

到了這里,關(guān)于Java中的equals方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • equals方法的用法(java)

    equals 和 == 易錯(cuò)使用案例集合

    2024年02月16日
    瀏覽(19)
  • Java中怎么使用equals()方法比較

    ? ? ? ?在 Java 中, equals() 方法用于比較兩個(gè)對象是否相等。 equals() 方法是 Object 類的方法,可以被所有的類繼承和使用。 要使用 equals() 方法,需要按照以下步驟進(jìn)行操作: 1.確保你要比較的對象不為 null 。否則,如果你嘗試調(diào)用 equals() 方法,會觸發(fā)空指針異常。 2.調(diào)用要

    2024年01月19日
    瀏覽(32)
  • 【Java】常見面試題:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

    【Java】常見面試題:HTTP/HTTPS、Servlet、Cookie、Linux和JVM

    努力經(jīng)營當(dāng)下 直至未來明朗! “抓包工具”:是個(gè)特殊的軟件,相當(dāng)于一個(gè)“代理程序”,瀏覽器給服務(wù)器的請求就會經(jīng)過這個(gè)代理程序(響應(yīng)也是經(jīng)過該代理程序的),進(jìn)一步的就能分析出請求和響應(yīng)的結(jié)果如何。 fiddler可以抓取http請求,也可以開啟抓取https請求。 HTTP

    2024年02月12日
    瀏覽(29)
  • Java面試題: == 和 equals() 區(qū)別,toString方法

    == :運(yùn)算符 可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中 如果比較的是基本數(shù)據(jù)類型變量:比較兩個(gè)變量保存的數(shù)據(jù)是否相等。(不一定類型要相同) 如果比較的是引用數(shù)據(jù)類型變量:比較兩個(gè)對象的地址值是否相同.即兩個(gè)引用是否指向同一個(gè)對象實(shí)體 補(bǔ)充: == 符

    2024年02月08日
    瀏覽(21)
  • Effective Java筆記(11)覆蓋 equals 時(shí)總要覆蓋 hashCode

    ???????? 在每個(gè) 覆蓋了 equals 方法的類中,都 必須 覆蓋 hashCode 方法 。 如果不這樣做的話,就會違反 hashCode 的通用約定,從而導(dǎo)致該類無法結(jié)合所有基于散列的集合一起正常運(yùn)作,這類集合包括 HashMap 和 HashSet 。 下面是約定的內(nèi)容,摘自 Object 規(guī)范: 1、在應(yīng)用程序的執(zhí)

    2024年02月15日
    瀏覽(24)
  • 【JavaSE】Java基礎(chǔ)語法(十三):Java 中的集合(十分全面)

    【JavaSE】Java基礎(chǔ)語法(十三):Java 中的集合(十分全面)

    List (對付順序的好幫?): 存儲的元素是有序的、可重復(fù)的。 Set (注重獨(dú)???的性質(zhì)): 存儲的元素是?序的、不可重復(fù)的。 Queue (實(shí)現(xiàn)排隊(duì)功能的叫號機(jī)): 按特定的排隊(duì)規(guī)則來確定先后順序,存儲的元素是有序的、可重復(fù)的。 Map (? key 來搜索的專家): 使?鍵值對(key-value)存

    2024年02月10日
    瀏覽(26)
  • 【JavaSE】Java基礎(chǔ)語法(三十七):Java 中的 String 類(源碼級別)

    【JavaSE】Java基礎(chǔ)語法(三十七):Java 中的 String 類(源碼級別)

    String 表示 字符串類型,屬于 引用數(shù)據(jù)類型 。Java 中 String 是 不可變 的。 在 Java 當(dāng)中 雙引號 括起來的字符串,是直接存儲在“方法區(qū)”的“字符串常量池”當(dāng)中的。 源碼: 源碼: 源碼: 源碼: 源碼: 源碼: 源碼: 源碼: https://blog.csdn.net/qq_44715943/article/details/116308837

    2024年02月06日
    瀏覽(34)
  • 【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用

    【JAVA】 javaSE中的數(shù)組|數(shù)組的概念&使用

    數(shù)組:可以看成是相同類型元素的一個(gè)集合。在內(nèi)存中是一段連續(xù)的空間。在java中,包含6個(gè)整形類型元素的數(shù)組,可以看做是酒店中連續(xù)的6個(gè)房間. 1. 數(shù)組中存放的元素其類型相同 2. 數(shù)組的空間是連在一起的 3. 每個(gè)空間有自己的編號,其實(shí)位置的編號為0,即數(shù)組的下標(biāo)?

    2024年02月14日
    瀏覽(23)
  • 【JavaSE】Java方法的使用

    【JavaSE】Java方法的使用

    【本節(jié)目標(biāo)】 1. 掌握方法的定義以及使用 2. 掌握方法傳參 3. 掌握方法重載 4. 掌握遞歸 目錄 1.方法概念及使用 1.1什么是方法(method) 1.2 方法定義 1.3 方法調(diào)用的執(zhí)行過程 1.4 實(shí)參和形參的關(guān)系 2. 方法重載 2.1 為什么需要方法重載 2.2 方法重載概念 3. 遞歸 3.1 生活中的故事 3.2 遞

    2024年02月12日
    瀏覽(23)
  • Java課題筆記~ Servlet編程

    Java課題筆記~ Servlet編程

    (1)什么是Servlet Servlet是基于Java語言的Web編程技術(shù),部署在服務(wù)器端的Web容器里,獲取客戶端的訪問請求,并根據(jù)請求生成響應(yīng)信息返回給客戶端。 創(chuàng)建Servlet的方式,有 如下圖:一般創(chuàng)建Servlet都是通過繼承HttpServlet來實(shí)現(xiàn),如圖中的HelloServlet。 (類圖快捷鍵:Ctrl + Alt + U)

    2024年02月13日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包