首頁  >  文章  >  Java  >  java equals方法是什麼

java equals方法是什麼

藏色散人
藏色散人原創
2023-03-10 10:58:0718168瀏覽

java equals方法是object類別中的方法,只能用於判斷引用類型;equals方法預設判斷的是位址是否相等,子類別中往往重寫該方法,用於判斷內容是否相等,其使用語法如「public boolean equals(Object obj) {return (this == obj);}」。

java equals方法是什麼

本教學操作環境:Windows10系統、java8、Dell G3電腦。

Java中的equals方法

#一、"=="運算子

"=="是一個比較運算子。

  • "=="既可以判斷基本型別,又可以判斷參考型別。
  • "=="如果判斷基本型,判斷的是值是否相等。 eg: int i=10; double d=10.0
  • "=="若判斷引用型,判斷的是位址是否相等,即判定為不是同一個物件。

二、equals方法

  • equals是object類別中的方法,只能用來判斷引用型別
  • equals方法預設判斷的是位址是否相等,子類別中往往會重寫該方法,用於判斷內容是否相等。例如String和Integer類別中的equals原始碼。

Object類別中的equals方法的來源碼:

Object類別中的equals方法預設就是比較物件位址是否相同。

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

解釋:this指的就是目前對象,this是指equals方法是誰呼叫的,上面的hello呼叫的equals,所以this指的是字串hello,而==右邊的obj對象,是傳入的abc。

三、重寫equals方法練習

練習一:

package object;
/*
判断两个person对象的内容是否相等
如果两个person对象的各个属性值都一样,则返回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));   //输出结果是true
    }
}

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

    //重写Object的equals方法
    public boolean equals(Object obj) {
        //如果比较的两个对象是同一个对象,则直接返回true
        if (this == obj){   //this就代表调用equals方法的那个对象,obj就是方法里面的实参
            return true;
        }
        //类型判断
        if (obj instanceof Person){  //obj是Person,我们才比较
            //进行 向下转型(即obj转成Person); 因为我需要得到obj的各个属性,如果不转型,拿不到
            Person p = (Person) obj;
            return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender;
        }
        //如果不是person,则直接返回false;总不能拿一个人跟一个狗比
        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左邊是對象,右邊是類別;當物件是右邊類別或子類別所建立物件時,傳回true;否則,返false。

練習二:java equals方法是什麼

    # 解釋:
  • sout1:p1和p2都是對象,因此==判斷的是位址是否相同,false
  • sout2:p1.name和p2.name都是字串,因此這裡的equals調用的是String類別的中的equals方法,判斷的是內容是否相同,true
  • sout3:p1和p2都是對象,因此這裡的equals是Object類別中的equals方法,判斷的是地址是否相同,false
  • sout4:s1和s2都是String類別的對象,因此這裡的equals呼叫的是String類別的中的equals方法,判斷的是內容是否相同,true
sout5:s1和s2都是對象,因此==判斷的是地址是否相同,false

練習三:java equals方法是什麼

     解釋:
  • sout1:65和65.0是相等的,true
  • sout2:字元的本質還是數字,查閱AscII表,A就是12,true
  • sout3:沒啥說的
  • sout4:沒啥說的
  • sout5:沒啥說的
sout6:都不是同一種類型,==直接編譯錯誤

相關推薦:《###Java影片教學###》###

以上是java equals方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn