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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么沒(méi)有調(diào)用類中的toString()方法,卻自動(dòng)實(shí)現(xiàn)了轉(zhuǎn)換?

package?test;

public?class?MyDate?{
	int?year;
	int?month;
	int?day;
	
	void?set(int?y,int?m,int?d){
		year=y;
		month=m;
		day=d;
	}
	void?set(MyDate?d){
		set(d.year,d.month,d.day);
	}
	public?String?toString(){
		return?year+"年"+month+"月"+day+"日";
	}
	public?boolean?equals(MyDate?d){
		return?this==d||d!=null&&year==d.year&&month==d.month&&day==d.day;
	}
	public?static?void?main(String?args[]){
		MyDate?d1=new?MyDate();
		d1.set(2009,7,16);
		MyDate?d2=d1;
		System.out.println("d1:"+d1+",d2:"+d2+",d1==d2?"+(d1==d2));
		d2.year=2008;
		System.out.println("d1:"+d1+",d2:"+d2+",d1==d2?"+(d1==d2)+",d1.eguals(d2)?"+(d1.equals(d2)));
		d2=new?MyDate();
		d2.set(d1);
		System.out.println("d1:"+d1+",d2:"+d2+",d1==d2?"+(d1==d2)+",d1.eguals(d2)?"+(d1.equals(d2)));
		
	}

}

輸出結(jié)果是:

d1:2009年7月16日,d2:2009年7月16日,d1==d2?true

d1:2008年7月16日,d2:2008年7月16日,d1==d2?true,d1.eguals(d2)?true

d1:2008年7月16日,d2:2008年7月16日,d1==d2?false,d1.eguals(d2)?true


代碼中并沒(méi)有調(diào)用過(guò)toString()方法,為什么最后輸出的時(shí)候會(huì)自動(dòng)調(diào)用了呢?

正在回答

1 回答

如果你輸出的是對(duì)象,d1等效為d1.toString()下面是理由:

1、System.out.println(center.toString())這句對(duì)應(yīng)的源碼:

public?void?println(String?x)?{

????synchronized?(this)?{

????????print(x);?//?打印x

????????newLine();?//?換行

?}

}

這能看懂吧,直接輸出了傳進(jìn)來(lái)的參數(shù)x(center.toString())

2、System.out.println(center)這句對(duì)應(yīng)的源碼:

public?void?println(Object?x)?{

????????String?s?=?String.valueOf(x);?//?x對(duì)象轉(zhuǎn)換為String

????????synchronized?(this)?{

????????????print(s);

????????????newLine();

????????}

????}

?主要看String?s?=?String.valueOf(x);這句,然后再看看是怎么把對(duì)象x轉(zhuǎn)換為String的,

?String.valueOf(x)對(duì)應(yīng)的源碼:

?public?static?String?valueOf(Object?obj)?{

????return?(obj?==?null)???"null"?:?obj.toString();

????}

??這下看到了吧,把剛才那x(也就是你的center)轉(zhuǎn)換為String是調(diào)用了obj.toString()得到

??的。

??所以"直接輸出對(duì)象時(shí),會(huì)默認(rèn)調(diào)用對(duì)象toString()方法


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

shenzhi 提問(wèn)者

說(shuō)的很清楚,謝謝~
2015-12-04 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為什么沒(méi)有調(diào)用類中的toString()方法,卻自動(dòng)實(shí)現(xiàn)了轉(zhuǎn)換?

我要回答 關(guān)注問(wèn)題
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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