第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

為什么同樣是對象,輸出對象名就有不同?

為什么同樣是對象,輸出對象名就有不同?

whopperNuolan 2019-08-10 16:36:38
public?class?Test{ ????Integer?one; } ????public?static?void?main(String[]?args){ ????Test?test?=?new?Test(); ????System.out.println(test);? ????System.out.println(test.one);? ????}為什么輸出對象名的時(shí)候,包裝類的對象就不輸出實(shí)例化的對象地址??
查看完整描述

1 回答

已采納
?
給我丶鼓勵(lì)啊

TA貢獻(xiàn)4條經(jīng)驗(yàn) 獲得超3個(gè)贊

當(dāng)調(diào)用System.out.println()輸入一個(gè)對象的時(shí)候,jvm會去調(diào)用對象的toString()方法。因?yàn)樗袑ο蠖紩^承Object對象,因此當(dāng)當(dāng)前對象沒有重寫toString()方法的時(shí)候,JVM就會調(diào)用Object對象的toString()。

以下是Object的toString()源碼,可以看到,輸出的就是你所說的引用。

public?String?toString()?{
????return?getClass().getName()?+?"@"?+?Integer.toHexString(hashCode());
}

那么為什么Integer對象輸出的確實(shí)值,根據(jù)上面的描述,Integer應(yīng)該是重寫了toString()方法,以下是源碼。

public?static?String?toString(int?i)?{
????if?(i?==?Integer.MIN_VALUE)
????????return?"-2147483648";
????int?size?=?(i?<?0)???stringSize(-i)?+?1?:?stringSize(i);
????char[]?buf?=?new?char[size];
????getChars(i,?size,?buf);
????return?new?String(buf,?true);
}

可以看到,Integer因?yàn)橹貙懥藅oString()方法,所以輸出的數(shù)據(jù)才會不一樣。

因此想輸出自定義內(nèi)容,可以重新對象類的toString()方法

查看完整回答
2 反對 回復(fù) 2019-08-11
  • 1 回答
  • 0 關(guān)注
  • 556 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號