java中的tostring方法的具體用法
我們知道調(diào)用對(duì)象的toString()方法會(huì)直接輸出對(duì)象的屬性信息,但是具體怎么實(shí)現(xiàn)的?以及如何更好地實(shí)現(xiàn)它呢?現(xiàn)在來學(xué)習(xí)下。
通過java文檔我們能知道,toString()方法在Object類里定義的,其返回值類型為String類型,返回類名和它的引用地址。
在進(jìn)行String類與其他類型的連接操作時(shí),自動(dòng)調(diào)用toString()方法,demo如下:
Date now = new Date(); System.out.println("now = " + now);//相當(dāng)于下一行代碼 System.out.println("now = " + now.toString());
實(shí)際應(yīng)用中,可以根據(jù)需要在用戶自定義類型中重寫toString()方法,如Stirng類重寫了toString()方法,返回字符串的值,dome如下
System.out.println(s1);//相當(dāng)于下一行代碼 System.out.println(s1.toString());
基本數(shù)據(jù)類型轉(zhuǎn)換為String類型是,調(diào)用了對(duì)應(yīng)包裝類的toString()方法,demo如下:
int a = 10; System.out.println("a = " + a);
現(xiàn)在來看下jdk里面的源碼是怎么樣的:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
現(xiàn)在我們來實(shí)踐使用它:
Person p1 = new Person(); System.out.println(p1.toString());//TestEquals.Person@15db9742 System.out.println(p1);//TestEquals.Person@15db9742 因?yàn)檩敵龅臅r(shí)候回默認(rèn)調(diào)用Objec類toString()方法
當(dāng)我們打印一個(gè)對(duì)象的引用時(shí),實(shí)際是默認(rèn)調(diào)用這個(gè)對(duì)象的toString()方法
當(dāng)打印的對(duì)象所在類沒有重寫Object中的toString()方法時(shí),默認(rèn)調(diào)用的是Object類中toString()方法。
返回此對(duì)象所在的類及對(duì)應(yīng)的堆空間對(duì)象實(shí)體的首地址值。
當(dāng)我們打印對(duì)象所 在類重寫了toString(),調(diào)用的就是已經(jīng)重寫了的toString()方法,一般重寫是將類對(duì)象的屬性信息返回。
我們也可以自定義一個(gè)tostring()方法:
//手動(dòng)實(shí)現(xiàn) public String toString(){ return " Person:name=" + name +" age=" + age; }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在spring-boot工程中添加spring mvc攔截器
這篇文章主要介紹了在spring-boot工程中添加spring mvc攔截器,Spring MVC的攔截器(Interceptor)不是Filter,同樣可以實(shí)現(xiàn)請(qǐng)求的預(yù)處理、后處理。,需要的朋友可以參考下2019-06-06詳解如何全注解方式構(gòu)建SpringMVC項(xiàng)目
這篇文章主要介紹了詳解如何全注解方式構(gòu)建SpringMVC項(xiàng)目,利用Eclipse構(gòu)建SpringMVC項(xiàng)目,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10Java中動(dòng)態(tài)設(shè)置JVM參數(shù)的方法總結(jié)
通過動(dòng)態(tài)設(shè)置JVM參數(shù),開發(fā)者可以更有效地管理資源使用和優(yōu)化性能,本文將詳細(xì)闡述如何在Java中動(dòng)態(tài)設(shè)置JVM參數(shù),感興趣的小伙伴可以了解下2024-12-12Java使用Socket判斷某服務(wù)能否連通代碼實(shí)例
這篇文章主要介紹了Java使用Socket判斷某服務(wù)能否連通代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Java Swing JPasswordField密碼框的實(shí)現(xiàn)示例
這篇文章主要介紹了Java Swing JPasswordField密碼框的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12java連接mysql數(shù)據(jù)庫實(shí)現(xiàn)單條插入和批量插入
這篇文章主要為大家詳細(xì)介紹了java連接mysql數(shù)據(jù)庫實(shí)現(xiàn)單條插入和批量插入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08