Java Object toString方法原理解析
在Java中,所有的對象都是繼承自O(shè)bject,自然繼承了toString方法,在當(dāng)使用System,out.println()里面為一個(gè)對象的引用時(shí),自動(dòng)調(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í)候會(huì)進(jìn)行內(nèi)存申請,接著進(jìn)入主方法main中,在第一句輸出語句中,里面用new了此類對象,當(dāng)執(zhí)行該代碼的時(shí)候,先會(huì)創(chuàng)建本類的對象,調(diào)用下面重寫的tostring方法,輸出I,返回java,再進(jìn)行main方法中第一句話的打印輸出,拼接得到I love java。
這個(gè)me2 的輸出,是static的定理,類加載概念, static修飾的類,一般的一個(gè)類
只發(fā)生一次類加載。輸出m2。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Python編寫nmap掃描工具2. js實(shí)現(xiàn)跳一跳小游戲3. Django通過設(shè)置CORS解決跨域問題4. JVM之class文件結(jié)構(gòu)5. 使用idea 去除 html 代碼前的行號和空行的方法詳解6. js實(shí)現(xiàn)貪吃蛇小游戲(加墻)7. 10個(gè)提供免費(fèi)PHP腳本下載的網(wǎng)站8. PHP設(shè)計(jì)模式(四)原型模式Prototype實(shí)例詳解【創(chuàng)建型】9. SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI10. php5.6不能擴(kuò)展redis.so的解決方法
