Rumah >Java >javaTutorial >Apakah kaedah java equals?

Apakah kaedah java equals?

藏色散人
藏色散人asal
2023-03-10 10:58:0718228semak imbas

Kaedah java equals ialah kaedah dalam kelas objek dan hanya boleh digunakan untuk menentukan jenis rujukan; kaedah equals secara lalai menentukan sama ada alamat adalah sama kandungannya adalah sama. Sintaks penggunaannya adalah seperti "public boolean equals(Object obj) {return (this == obj);}".

Apakah kaedah java equals?

Persekitaran pengendalian tutorial ini: sistem Windows 10, java8, komputer Dell G3.

sama dengan kaedah dalam Java

1 "==" operator

"==" ialah a operator perbandingan.

  • "==" boleh menentukan kedua-dua jenis asas dan jenis rujukan.
  • "=="Jika anda menilai jenis asas, anda akan menilai sama ada nilainya sama. cth: int i=10; double d=10.0
  • "==" Jika jenis rujukan dinilai, apa yang dinilai ialah sama ada alamatnya sama, iaitu sama ada ia adalah objek yang sama.

2. equals method

  • equals ialah kaedah dalam kelas objek dan hanya boleh digunakan untuk menentukan jenis rujukan .
  • Kaedah equals menentukan sama ada alamat adalah sama secara lalai Kaedah ini sering diganti dalam subkelas untuk menentukan sama ada kandungannya sama. Sebagai contoh, kod sumber yang sama dalam kelas String dan Integer.

Kod sumber kaedah sama dalam kelas Objek:

Kaedah sama dalam kelas Objek lalai untuk membandingkan sama ada alamat objek adalah sama.

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

Penjelasan: ini merujuk kepada objek semasa, ini merujuk kepada siapa yang memanggil kaedah equals, dan hello di atas adalah sama, jadi ini merujuk kepada rentetan hello, dan == The obj objek di sebelah kanan ialah abc yang masuk.

3. Menulis semula latihan kaedah sama

Latihan 1:

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;
    }
}

Petua:

Penggunaan instanceof: result = object instanceof class

Instanceof mempunyai objek di sebelah kiri dan kelas di sebelah kanan apabila objek adalah objek yang dicipta oleh kelas atau subkelas di sebelah kanan, benar dikembalikan;

Latihan 2:

Apakah kaedah java equals?

Penerangan:

  • sout1: p1 dan p2 ialah kedua-dua objek, jadi == menentukan sama ada alamat adalah sama, palsu
  • sout2: p1.name dan p2.name ialah kedua-dua rentetan, jadi equals di sini memanggil equals dalam kaedah kelas String, ia menentukan sama ada kandungan adalah sama, benar
  • sout3: p1 dan p2 ialah kedua-dua objek, jadi yang sama di sini ialah kaedah sama dalam kelas Objek, dan ia menentukan sama ada alamatnya sama, palsu
  • sout4: s1 dan s2 ialah kedua-dua objek kelas String, jadi persamaan di sini memanggil kaedah sama dalam kelas String untuk menentukan sama ada kandungannya sama, benar
  • sout5: s1 dan s2 ialah kedua-dua objek , jadi == menentukan sama ada alamat adalah sama, palsu

Latihan 3:

Apakah kaedah java equals?

Penjelasan:

  • sout1: 65 dan 65.0 adalah sama, benar
  • sout2: Intipati aksara masih nombor, A adalah 12 , benar
  • sout3: tiada apa yang perlu dikatakan
  • sout4: tiada apa yang perlu dikatakan
  • sout5: tiada untuk dikatakan
  • sout6: bukan jenis yang sama, == ralat kompilasi langsung

Cadangan berkaitan: "Tutorial Video Java"

Atas ialah kandungan terperinci Apakah kaedah java equals?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn