Java中Object toString方法簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
一、Object類(lèi)介紹
Object類(lèi)在Java里面是一個(gè)比較特殊的類(lèi),JAVA只支持單繼承,子類(lèi)只能從一個(gè)父類(lèi)來(lái)繼承,如果父類(lèi)又是從另外一個(gè)父類(lèi)繼承過(guò)來(lái),那他也只能有一個(gè)父類(lèi),父類(lèi)再有父類(lèi),那也只能有一個(gè),JAVA為了組織這個(gè)類(lèi)組織得比較方便,它提供了一個(gè)最根上的類(lèi),相當(dāng)于所有的類(lèi)都是從這個(gè)類(lèi)繼承,這個(gè)類(lèi)就叫Object。所以O(shè)bject類(lèi)是所有JAVA類(lèi)的根基類(lèi),是所有JAVA類(lèi)的老祖宗。所有的類(lèi),不管是誰(shuí),都是從它繼承下來(lái)的。
二、toString方法介紹
一個(gè)字符串和另外一種類(lèi)型連接的時(shí)候,另外一種類(lèi)型會(huì)自動(dòng)轉(zhuǎn)換成String類(lèi)型,然后再和字符串連接?;A(chǔ)的數(shù)據(jù)類(lèi)型int,float,double轉(zhuǎn)換成字符串比較簡(jiǎn)單,按照它們的數(shù)字轉(zhuǎn)換過(guò)來(lái)就成了,可以引用類(lèi)型呢,Person p = new Person();一個(gè)字符串加上這個(gè)p,你就不知道要怎么把這個(gè)p轉(zhuǎn)換成字符串了,因?yàn)檫@個(gè)p是一個(gè)引用類(lèi)型。 p = new Person();
public class TestToString { public static void main(String[] args) { Dog d = new Dog(); /** * 如果沒(méi)有重寫(xiě)toString方法,那么輸出來(lái)的默認(rèn)的字符串內(nèi)容是“類(lèi)名+哈希編碼”, * 如:dog=cn.galc.test.Dog@150bd4d * 這里的d就是一個(gè)引用類(lèi)型,打印的時(shí)候,這個(gè)引用類(lèi)型d會(huì)自動(dòng)調(diào)用toString()方法將自己轉(zhuǎn)換成字符串然后再與字符串”d:=”相連, * 然后一起被打印出來(lái)。d為什么可以自動(dòng)調(diào)用toString()方法呢,Dog類(lèi)里面也沒(méi)有聲明這個(gè)toString()方法。 * 這是因?yàn)閠oString()方法是Object類(lèi)里面的方法,而所有的類(lèi)都是從Object類(lèi)繼承下來(lái)的, * Dog類(lèi)當(dāng)然也不例外,所以Dog類(lèi)繼承了Object類(lèi)里面的toString()方法, * 所以Dog類(lèi)的對(duì)象當(dāng)然可以直接調(diào)用toString()方法了。 * 但是Dog類(lèi)對(duì)繼承下來(lái)的toString()方法很不滿(mǎn)意, * 因?yàn)槭褂眠@個(gè)繼續(xù)下來(lái)toString()方法將引用對(duì)象轉(zhuǎn)換成字符串輸出時(shí)輸出的是一連串令人看不懂的哈希編碼。 * 為了使打印出來(lái)的信息使得正常人都能看得懂,因此要在Dog類(lèi)里面把這個(gè)繼承下來(lái)的toString()方法重寫(xiě), * 使得調(diào)用這個(gè)toString()方法將引用對(duì)象轉(zhuǎn)換成字符串時(shí)打印出來(lái)的是一些正常的,能看得懂的信息。 * 在子類(lèi)重寫(xiě)從父類(lèi)繼承下來(lái)的方法時(shí),從父類(lèi)把要重寫(xiě)的方法的聲明直接copy到子類(lèi)里面來(lái), * 這樣在子類(lèi)里面重寫(xiě)的時(shí)候就不會(huì)出錯(cuò)了。 */ System.out.println("dog="+d);//打印結(jié)果:dog=I'm a cool Dog } } class Dog{ /** * 在這里重寫(xiě)了Object類(lèi)里面的toString()方法后, * 引用對(duì)象自動(dòng)調(diào)用時(shí)調(diào)用的就是重寫(xiě)后的toString()方法了, * 此時(shí)打印出來(lái)的顯示信息就是我們重寫(xiě)toString()方法時(shí)要返回的字符串信息了, * 不再是那些看不懂的哈希編碼了。 */ public String toString() { return "I'm a Dog"; } }
任何一個(gè)類(lèi)都是從Object類(lèi)繼承下來(lái)的,因此在任何一個(gè)類(lèi)里面都可以重寫(xiě)這個(gè)toString()方法。toString()方法的作用是當(dāng)一個(gè)引用對(duì)象和字符串作連接的時(shí)候,或者是直接打印這個(gè)引用對(duì)象的時(shí)侯,這個(gè)引用對(duì)象都會(huì)自動(dòng)調(diào)用toString()方法,通過(guò)這個(gè)方法返回一個(gè)表示引用對(duì)象自己正常信息的字符串,而這個(gè)字符串的內(nèi)容由我們自己去定義,默認(rèn)的字符串內(nèi)容是“類(lèi)名+哈希編碼”。因此我們可以通過(guò)在類(lèi)里面重寫(xiě)toString()方法,把默認(rèn)的字符串內(nèi)容改成我們自己想要表達(dá)的正常信息的字符串內(nèi)容。
以上所述是小編給大家介紹的Java中Object toString方法簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java前后端分離的在線(xiàn)點(diǎn)餐系統(tǒng)實(shí)現(xiàn)詳解
這是一個(gè)基于SpringBoot+Vue框架開(kāi)發(fā)的在線(xiàn)點(diǎn)餐系統(tǒng)。首先,這是一個(gè)前后端分離的項(xiàng)目。具有一個(gè)在線(xiàn)點(diǎn)餐系統(tǒng)該有的所有功能,感興趣的朋友快來(lái)看看吧2022-01-01Springboot實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)流程詳解
通過(guò)重寫(xiě)SchedulingConfigurer方法實(shí)現(xiàn)對(duì)定時(shí)任務(wù)的操作,單次執(zhí)行、停止、啟動(dòng)三個(gè)主要的基本功能,動(dòng)態(tài)的從數(shù)據(jù)庫(kù)中獲取配置的定時(shí)任務(wù)cron信息,通過(guò)反射的方式靈活定位到具體的類(lèi)與方法中2022-09-09Springmvc自定義異常處理器實(shí)現(xiàn)流程解析
這篇文章主要介紹了Springmvc自定義異常處理器實(shí)現(xiàn)流程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Spring Security+JWT實(shí)現(xiàn)認(rèn)證與授權(quán)的實(shí)現(xiàn)
本文主要介紹了Spring Security+JWT實(shí)現(xiàn)認(rèn)證與授權(quán)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04IDEA 集成 Docker 插件一鍵部署 SpringBoot 應(yīng)用
通過(guò)本文介紹的方法,我們期望能幫助開(kāi)發(fā)者更輕松地在IDEA中實(shí)現(xiàn)Spring Boot應(yīng)用的Docker化部署,為現(xiàn)代軟件開(kāi)發(fā)提供更便捷的解決方案,感興趣的朋友一起看看吧2023-11-11Java中短路運(yùn)算符與邏輯運(yùn)算符示例詳解
這篇文章主要給大家介紹了關(guān)于Java中短路運(yùn)算符與邏輯運(yùn)算符的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Springboot靜態(tài)資源的訪(fǎng)問(wèn)方法介紹
最近在做SpringBoot項(xiàng)目的時(shí)候遇到了“白頁(yè)”問(wèn)題,通過(guò)查資料對(duì)SpringBoot訪(fǎng)問(wèn)靜態(tài)資源做了總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08