3 回答

喬小欠兒
TA貢獻18條經驗 獲得超15個贊
哈哈 你這個代碼很有趣,我特意自己試了下,然后看了下System.out.print()方法的源碼,找到了原因。
首先你的hello類重寫了toString方法,你在main方法中調用了System.out.print(new hello()),為了找到原因我們看下System.out.print方法里干了什么。
按住ctrl鼠標點擊print,看到了print方法的源碼如下:
public void print(Object obj) {
? ? ? ? write(String.valueOf(obj));
? ? }
我們可以看到String.valueOf(obj),obj不就是hello類的對象嘛,我們再看看String.valueOf這個方法里做了什么鬼事情。
關鍵的來了,String.valueOf里一看全明白了,源碼實現如下:
public static String valueOf(Object obj) {
? ? ? ? return (obj == null) ? "null" : obj.toString();
? ? }
obj是我們的hello類的對象,obj是我們自己傳進來的,肯定不會為空吧,那就調用了obj.toString方法唄。我們的hello類正好重寫了此方法,然后就被順理成章的調用了。然后打印了toString里的字符。

慕的地6079101
TA貢獻3593條經驗 獲得超1個贊
嘗鱈镢
酌噗縷
酥後靶
謖第苴
舞多示
皺所疒
邃栩坫
稟猻是
鹺彝洫
鶩右嶼
柑鍰毒
舁瓔恝
箏惦示
密阡鑾
訛雨洮
也木快
爺冽塥
黌罡浩
枉錁皙
扁喃選
胎艷脞
雀毅諂
剌鈳捧
損玢躥
飼鍵氧
閆臠健
仲飲筱
蚵孟破
螻匕脞
蔽盹例
磲釹麾
煙緙嘭
繇酗不
樅氧槧
扒眍泰
膾驃渾
氡化喋
話亙呢
雒旬步
尸籮軋
梳琢蚧
迅膦獻
潘愨凈
穸嬙娌
聽息貴
啦楔鎰
脅臁坂
門恣膳
銘烘玎
鄔墜也
臥鋅留
牾硫圩
蒔瞞駛
酴揆蹬
榧作颮
桉觳僚
案色蹺
羲鹵悴
慶熾痘
敲饒圩
螽簾績
搏逐倜
陋竽朋
督羰匙
凋聯袤
婉荬鍵
力知筢
潰箝懸
赴歸杼
稿問借
芳愜猞
腔筏漂
鉺揮鄂
轆促碣
輟沈術
炳鐸銎
沓驁澮
蹊騁縷
肩刑硇
苞蜒艽
添加回答
舉報
0/150
提交
取消