你了解Java中的Object類嗎
任何一個(gè)類默認(rèn)繼承Object類,就算沒(méi)有直接繼承,最終也會(huì)間接繼承。
Object類,有兩種方式找到:
- 第一種:在源碼當(dāng)中找到
- 第二種:查閱java類庫(kù)的幫助文檔
Object類中兩個(gè)重要的方法:
- boolean equals (Object obj) //判斷兩個(gè)對(duì)象是否相等
- String toString () //將對(duì)象轉(zhuǎn)換成字符串形式
equals方法:
源代碼:
public boolean equals(Object obj) {
return (this == obj);
}
作用:通過(guò)調(diào)用這個(gè)方法可以判斷兩個(gè)對(duì)象是否相等
class MyTime {
int year;
int month;
int day;
public MyTime() {
super();
}
public MyTime(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
}
public class Test02 {
public static void main(String args[]) {
// 判斷兩個(gè)基本數(shù)據(jù)類型的數(shù)據(jù)是否相等,,直接使用”==“就行
int a = 100;
int b = 100;
// 這個(gè)等號(hào)判斷的是a中保存的100和b中保存的100是否相等
System.out.println(a == b);// true(相等) false(不相等) 結(jié)果為true
MyTime t1 = new MyTime(2021, 9, 15);
MyTime t2 = new MyTime(2021, 9, 15);
// 這個(gè)等號(hào)判斷的是t1保存的對(duì)象的內(nèi)存地址和t2保存的對(duì)象的內(nèi)存地址是否相等
System.out.println(t1 == t2);// 結(jié)果為false
}
}
// 重寫Object的equals方法之前(比較的是內(nèi)存地址)
boolean s = t1.equals(t2);
System.out.println(s);// 結(jié)果為false
判斷兩個(gè)對(duì)象是否相等不能用“==”,因?yàn)椤?=“判斷的是兩個(gè)對(duì)象的內(nèi)存地址,然而在Object類中的equals方法當(dāng)中,默認(rèn)采用的是”==“判斷兩個(gè)java對(duì)象是否相等。而”==“判斷的是兩個(gè)java對(duì)象的內(nèi)存地址是否相等,我們應(yīng)該判斷的是兩個(gè)java對(duì)象的內(nèi)容是否相等,equals方法無(wú)法滿足,需要子類重寫equals。
public boolean equals(Object obj) {
// 當(dāng)年月日都分別相等時(shí),表示兩個(gè)日期相同
// 獲取第一個(gè)日期的年月日
int year1 = this.year;
int month1 = this.month;
int day1 = this.day;
// 獲取第二個(gè)日期的年月日
if (obj instanceof MyTime) {
MyTime t = (MyTime) obj;
int year2 = t.year;
int month2 = t.month;
int day2 = t.day;
if (year1 == year2 && month1 == month2 && day1 == day2) {
return true;
}
}
return false;
}
// 重寫Object的equals方法之后(比較的是內(nèi)容) boolean t = t1.equals(t2); System.out.println(s);// 結(jié)果為true
toString方法:
源代碼:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
源代碼上toString方法的默認(rèn)實(shí)現(xiàn):類名@對(duì)象的內(nèi)存地址轉(zhuǎn)換為十六進(jìn)制的形式。
作用:通過(guò)調(diào)用這個(gè)方法可以將一個(gè)“Java對(duì)象”轉(zhuǎn)換成“字符串形式的表示形式“。(建議所有子類都重寫此方法)
class MyTime {
int year;
int month;
int day;
public MyTime() {
super();
}
public MyTime(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
@Override
public String toString() {
return "MyTime [year=" + year + ", month=" + month + ", day=" + day + "]";
}
}
public class Test01 {
public static void main(String args[]) {
MyTime t1 = new MyTime(2021, 9, 15);
String s1 = t1.toString();
// MyTime類重寫toString方法之前
System.out.println(s1);// com.MyTime@15db9742
// MyTime類重寫toString方法之后
System.out.println(s1);// MyTime [year=2021, month=9, day=15]
}
}
注:輸出引用時(shí),會(huì)自動(dòng)調(diào)用toString方法,即s1等同于s1.toString()。
到此這篇關(guān)于你了解Java中的Object類嗎 的文章就介紹到這了,更多相關(guān)Java Object類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot+hutool批量生成二維碼壓縮導(dǎo)出功能
這篇文章主要介紹了springboot+hutool批量生成二維碼壓縮導(dǎo)出功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
java通過(guò)復(fù)選框控件數(shù)組實(shí)現(xiàn)添加多個(gè)復(fù)選框控件示例分享
編寫程序,通過(guò)復(fù)選框控件數(shù)組事先選擇用戶愛好信息的復(fù)選框,在該程序中,要求界面中的復(fù)選框數(shù)量可以根據(jù)指定復(fù)選框名稱的字符串?dāng)?shù)組的長(zhǎng)度來(lái)自動(dòng)調(diào)節(jié)2014-02-02
mybatis和mybatisplus批量插入問(wèn)題示例詳解
最近在處理一個(gè)功能的時(shí)候,需要批量插入數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于mybatis和mybatisplus批量插入問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹非常詳細(xì),需要的朋友可以參考下2023-04-04
mybatis-plus中更新null值的問(wèn)題解決
本文主要介紹 mybatis-plus 中常使用的 update 相關(guān)方法的區(qū)別,以及更新 null 的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04
Java19新特性中結(jié)構(gòu)化并發(fā)的使用
Java19在并發(fā)編程領(lǐng)域引入了一個(gè)全新的概念:結(jié)構(gòu)化并發(fā),這一特性旨在簡(jiǎn)化并發(fā)任務(wù)的管理,提升多線程程序的可維護(hù)性和安全性,使其生命周期和控制流更加有序和明確,感興趣的可以了解一下2024-09-09
SpringCloud微服務(wù)多應(yīng)用腳手架的搭建與部署方式
這篇文章主要介紹了SpringCloud微服務(wù)多應(yīng)用腳手架的搭建與部署方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
關(guān)于protected修飾符詳解-源于Cloneable接口
這篇文章主要介紹了protected修飾符詳解-源于Cloneable接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot+SpringSecurity+jwt實(shí)現(xiàn)驗(yàn)證
本文主要介紹了SpringBoot+SpringSecurity+jwt實(shí)現(xiàn)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Spring Boot application.yml配置文件示例詳解
本文詳細(xì)介紹了SpringBootapplication.yml配置文件的使用和配置項(xiàng),通過(guò)學(xué)習(xí)本文,您應(yīng)該已經(jīng)掌握了如何使用application.yml文件來(lái)配置SpringBoot應(yīng)用程序的不同組件,如數(shù)據(jù)源、數(shù)據(jù)庫(kù)、緩存、郵件服務(wù)等,感興趣的朋友一起看看吧2025-02-02

