亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么重寫了equals()兩類的對象還是不相等

public?class?phone1?{
	int?size?=?1;

	@Override
	public?int?hashCode()?{
		final?int?prime?=?31;
		int?result?=?1;
		result?=?prime?*?result?+?size;
		return?result;
	}

	@Override
	public?boolean?equals(Object?obj)?{
		if?(this?==?obj)
			return?true;
		if?(obj?==?null)
			return?false;
		if?(getClass()?!=?obj.getClass())
			return?false;
		phone1?other?=?(phone1)?obj;
		if?(size?!=?other.size)
			return?false;
		return?true;
	}

}
public?class?phone2?{
	int?size?=?1;
}
public?class?PHONE?{
	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		phone1?p1?=?new?phone1();
		phone2?p2?=?new?phone2();

		if(p1.equals(p2))
		{
			System.out.println("兩個電腦的參數相同!");
		}
		else
		{
			System.out.println("兩個電腦的參數不同!");
		}
	}
}

結果是 ?兩個電腦的參數不同!

正在回答

3 回答

?phone1?p1?=?new?phone1();

?phone2?p2?=?new?phone2();

是分別用兩個類指向了兩個對象,equals的用法是用來比較同一個類的兩個對象,所以你的main函數應該改成如下,你再去運行就是相同了

public?class?PHONE?{

????public?static?void?main(String[]?args)?{

????????//?TODO?Auto-generated?method?stub

????????phone1?p1?=?new?phone1();

????????phone1 p2?=?new?phone1();

?

????????if(p1.equals(p2))

????????{

????????????System.out.println("兩個電腦的參數相同!");

????????}

????????else

????????{

????????????System.out.println("兩個電腦的參數不同!");

????????}

????}

}


2 回復 有任何疑惑可以回復我~
#1

慕粉4034825 提問者

那是怎么比較兩個對象的,好像你上面那樣,那兩個對象不是都是指同一個類嗎,那比較有什么意義?
2017-07-28 回復 有任何疑惑可以回復我~
#2

諸葛亮劍 回復 慕粉4034825 提問者

雖然是同一個類的,但是這個類中的兩個對象是不同的,就是你給這兩個對象賦的值是不同的也可能是相同的(由你來決定),就像該節教學視頻講的一樣,equals的用法是用來比較同一個類的兩個對象,雖然他并沒有明確的說,但是equals就是這樣使用的
2017-07-28 回復 有任何疑惑可以回復我~
#3

慕粉4034825 提問者

非常感謝!
2017-07-29 回復 有任何疑惑可以回復我~
#4

慕婉清7557668 回復 慕粉4034825 提問者

你這個重寫的equals的函數是用來比較size的值。比如有一個學生類,然后定義了兩個學生對象,一個叫TOM,一個叫KATE,用size來表示他們的年齡,那么p1.equals(p2)的含義就是比較TOM和KATE的年齡是否相同了。
2017-07-31 回復 有任何疑惑可以回復我~
查看1條回復

參數要toString,不然參數輸出的是在內存中的地址,而不是參數的值


0 回復 有任何疑惑可以回復我~

你這個只比較了對象,沒有比較size誒,你看看把多余的代碼注釋掉看看

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么重寫了equals()兩類的對象還是不相等

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號