Java Object toString方法原理解析
在Java中,所有的對象都是繼承自O(shè)bject,自然繼承了toString方法,在當(dāng)使用System,out.println()里面為一個(gè)對象的引用時(shí),自動調(diào)用toString方法將對象打印出來。如果重寫了tostring方法則調(diào)用重寫的toString 方法。
先看下面一段代碼
public class ToStringTest { static int i = 1; public static void main(String[] args) { System.out.println("love "+new ToStringTest()); ToStringTest a = new ToStringTest(); a.i++; System.out.println("me "+a.i); } public String toString(){ System.out.print("I "); return "java "; } }
運(yùn)行結(jié)果:
I love java
me 2
對代碼剖析:
首先聲明了一個(gè)靜態(tài)變量i,,static修飾的成員或代碼塊在類加載的時(shí)候會進(jìn)行內(nèi)存申請,接著進(jìn)入主方法main中,在第一句輸出語句中,里面用new了此類對象,當(dāng)執(zhí)行該代碼的時(shí)候,先會創(chuàng)建本類的對象,調(diào)用下面重寫的tostring方法,輸出I,返回java,再進(jìn)行main方法中第一句話的打印輸出,拼接得到I love java。
這個(gè)me2 的輸出,是static的定理,類加載概念, static修飾的類,一般的一個(gè)類
只發(fā)生一次類加載。輸出m2。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
spring源碼閱讀--aop實(shí)現(xiàn)原理講解
這篇文章主要介紹了spring源碼閱讀--aop實(shí)現(xiàn)原理講解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09校驗(yàn)非空的注解@NotNull如何取得自定義的message
這篇文章主要介紹了校驗(yàn)非空的注解@NotNull如何取得自定義的message,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09JAVA基于數(shù)組實(shí)現(xiàn)的商品信息查詢功能示例
這篇文章主要介紹了JAVA基于數(shù)組實(shí)現(xiàn)的商品信息查詢功能,結(jié)合實(shí)例形式詳細(xì)分析了java使用數(shù)組存儲數(shù)據(jù)實(shí)現(xiàn)的商品信息查詢功能相關(guān)操作技巧,需要的朋友可以參考下2019-11-11詳解JDK中ExecutorService與Callable和Future對線程的支持
這篇文章主要介紹了詳解JDK中ExecutorService與Callable和Future對線程的支持的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09Java實(shí)現(xiàn)時(shí)間片輪轉(zhuǎn)調(diào)度算法的示例代碼
時(shí)間片輪轉(zhuǎn)調(diào)度是一種最古老,最簡單,最公平且使用最廣的算法,這篇文章主要為大家介紹了如何利用Java實(shí)現(xiàn)這一算法,需要的可以參考一下2023-07-07java中functional interface的分類和使用詳解
這篇文章主要介紹了java中functional interface的分類和使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Mybatis-plus在項(xiàng)目中的簡單應(yīng)用
Mybatis-plus是Spring框架中OOM的一大利器,其簡單易用參考官網(wǎng)文檔即可很快上手,本文主要介紹了邏輯刪除,自動填充,分頁插件等的簡單使用,感興趣的可以了解一下2021-07-07