Java如何重寫(xiě)object類的equals方法詳解
1.Object類的equals()方法:
比較兩個(gè)對(duì)象是否是同一個(gè)對(duì)象,equals() 方法比較兩個(gè)對(duì)象,是判斷兩個(gè)對(duì)象引用指向的是同一個(gè)對(duì)象,即比較 2 個(gè)對(duì)象的內(nèi)存地址是否相等。是則返回true
Object類是所有類的父類,它的equals方法自然會(huì)被所有類繼承,有一個(gè)子 類String對(duì)equals方法進(jìn)行了覆蓋(重寫(xiě)),使其具有了新功能
2.Object類的equals()方法與==沒(méi)區(qū)別
Java.lang.String重寫(xiě)了equals()方法,把equals()方法的判斷變?yōu)榱伺袛嗥渲?/p>
當(dāng)有特殊需求,如認(rèn)為屬性相同即為同一對(duì)象時(shí),需要重寫(xiě)equals()

總結(jié):
1.基本數(shù)據(jù)類型數(shù)據(jù)值只能用
2.對(duì)于引用數(shù)據(jù)類型,和Object的equals方法是一樣的。(查看源碼)
由于String類對(duì)父類Object的equals方法的重寫(xiě),導(dǎo)致equals與= =唯一的區(qū)別在于比較對(duì)象
例題 :
重寫(xiě)比較規(guī)則,判斷兩名學(xué)員(Student)是否為同一對(duì)象
Student相關(guān)屬性
Id(學(xué)號(hào))、name(姓名)、age(年齡)
如果兩名學(xué)員的學(xué)號(hào)以及姓名相同,則為同一對(duì)象

1 對(duì) Student類進(jìn)行封裝 然后在里面重寫(xiě)equals方法
方法代碼:
public class Student {
private int id;
private String name;
private int age;
@Override //重寫(xiě)equals方法
public boolean equals(Object obj) {
if(obj instanceof Student){
Student s1=(Student)obj;
return this.id==s1.id&&this.name==s1.name&&this.age==s1.age;
}else {
System.out.println("錯(cuò)誤");
return false;
}
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
測(cè)試類進(jìn)行測(cè)試
public static void main(String[] args) {
Student s1 = new Student(1,"張三",18);
Student s2 = new Student(1,"張三",18);
Student s3 = new Student(1,"張三",18);
Student s4 = new Student(1,"張三",20);
System.out.println(s1.equals(s2));
System.out.println(s3.equals(s4));
}
以上程序執(zhí)行結(jié)果

到此這篇關(guān)于Java如何重寫(xiě)object類的equals方法的文章就介紹到這了,更多相關(guān)Java重寫(xiě)object類的equals方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java如何向http/https接口發(fā)出請(qǐng)求
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)向http/https接口發(fā)出請(qǐng)求,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
maven項(xiàng)目中<scope>provided</scope>的作用及說(shuō)明
這篇文章主要介紹了maven項(xiàng)目中<scope>provided</scope>的作用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Spring?Boot項(xiàng)目中解決跨域問(wèn)題的四種方式總結(jié)
這篇文章主要介紹了瀏覽器同源策略限制導(dǎo)致的跨域問(wèn)題,并詳細(xì)記錄了常見(jiàn)的跨域解決方案,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
XXL-Job端口額外占用問(wèn)題的解決方法小結(jié)
最近博主在Spring整合XXL-JOB到項(xiàng)目時(shí)發(fā)現(xiàn)了個(gè)問(wèn)題,注冊(cè)執(zhí)行器需要額外占用端口,也就是我們每啟動(dòng)一個(gè)程序,除了程序本身的API端口外,還需要額外開(kāi)放一個(gè)執(zhí)行器端口,所以本文給大家分享了XXL-Job端口額外占用問(wèn)題的解決方法小結(jié),需要的朋友可以參考下2024-05-05
Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼
這篇文章主要介紹了Spring boot+mybatis+thymeleaf 實(shí)現(xiàn)登錄注冊(cè)增刪改查功能的示例代碼,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

