Artikel ini membawakan anda pengetahuan yang berkaitan tentang java, yang terutamanya memperkenalkan isu berkaitan tentang kelas Objek, termasuk apakah kelas Objek, kaedah sama dan kaedah kod cincang dalam kelas Objek Mari kita lihat kandungan di bawah, semoga bermanfaat kepada semua.
Pembelajaran yang disyorkan: "tutorial video java"
Objek ialah kelas khas dalam perpustakaan kelas Java dan kelas induk bagi semua kelas.
Dalam erti kata lain, Java membenarkan sebarang jenis objek ditetapkan kepada pembolehubah jenis Objek.
Kecuali kelas Object, semua kelas dalam Java mempunyai hubungan warisan.
Kelas Objek terletak dalam pakej java.lang dan akan diimport secara automatik semasa penyusunan apabila kelas ditakrifkan, jika kelas induk yang diwarisi tidak ditentukan, kelas induk lalai ialah kelas Objek.
class Person {} class Student {} public class Test03 { public static void func(Object o) { } public static void main(String[] args) { func(new Person()); func(new Student()); } public static void main1(String[] args) { Object o = new Person(); Object o2 = new Student(); } }
Mari kita lihat kaedah dalam kelas Objek
Artikel ini secara ringkas akan memperkenalkan hashCode(), equals()
Lihat bahagian ini kod di bawah
class Person { public String dz; public Person(String dz) { this.dz = dz; } @Override public String toString() { return "Person{" + "dz='" + dz + '\'' + '}'; } } class Student { } public class Test03 { public static void main(String[] args) { Person person = new Person("beijing"); Person person1 = new Person("beijing"); System.out.println(person == person1); }
Jika anda bandingkan terus seperti ini untuk melihat sama ada alamatnya sama, false akan keluar dan outputnya salah
Jadi kalau nak bandingkan, adakah apa-apa cara?
Kaedah yang disediakan dalam java adalah sama, yang boleh digunakan untuk membandingkan sama ada dua objek adalah sama
System.out.println(person.equals(person1));
Jika anda menulis ini terus dalam utama, palsu masih akan dikeluarkan,
Ini kerana tiada yang sama secara peribadi, dan lalai diwarisi daripada Object
Anda boleh lihat bahawa perbandingan di dalamnya masih ini dan obj, yang merupakan parameter yang diluluskan pada masa ini, begitu juga palsu.
Jadi bagaimana untuk menggunakan equals untuk perbandingan
Maka kita perlu menulis semula equals sebelum kita boleh membandingkan
@Override public boolean equals(Object obj) { //判断当前obj参数是否为null if (obj == null) { return false; } if (this == obj) { return true; } //不是Person类对象 if (!(obj instanceof Person)) { return false; } Person ret = (Person) obj; return this.dz.equals(ret.dz); }
Kita boleh String Help menulis semula sama dengan
Pada masa ini equals boleh membandingkan
Bandingkan objek Apabila kandungan adalah sama, anda perlu menulis semula sama dengan
menggunakan hashCode untuk mengira kedudukan objek tertentu, iaitu ialah alamat Memori, dan kemudian panggil kaedah Integer.toHexString() untuk mengeluarkan alamat ini dalam perenambelasan
,
dua dz adalah sama, kemudian Gunakan hashCode secara langsung untuk mengira alamat memori, dan kemudian kod mendapati bahawa alamat memori adalah berbeza
Ini bermakna bahawa penambahan terus hashCode seperti ini tidak mungkin, maka anda perlu melaksanakan semula hashCode,
Mari tulis semula Kod cincang,
@Override public int hashCode() { return Objects.hash(dz); }
dan kemudian cuba jalankan kod itu. Sudah tentu, selepas menulis semula, alamat memori adalah sama
Ini ialah sama yang dijana dan Kod cincang
"
Atas ialah kandungan terperinci Ringkasan mata pengetahuan kelas Objek di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!