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

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

如視頻教程,若我用父類animal創(chuàng)建一個(gè)對(duì)象dog,,用子類dog創(chuàng)建一個(gè)dog2,并對(duì)兩個(gè)對(duì)象的name和age賦相同的值,用equal方法對(duì)比時(shí)為什么顯示不相同?

如視頻教程,若我用父類animal創(chuàng)建一個(gè)對(duì)象dog,,用子類dog創(chuàng)建一個(gè)dog2,并對(duì)兩個(gè)對(duì)象的name和age賦相同的值,用源碼改過(guò)equal方法,對(duì)比時(shí)為什么顯示不相同?核心代碼如下:

package?com.imooc;

public?class?Pig?{
	public?int?age=20;
	public?String?name="pig";
	@Override
	public?boolean?equals(Object?obj)?{
		if?(this?==?obj)
			return?true;
		if?(obj?==?null)
			return?false;
		if?(getClass()?!=?obj.getClass())
			return?false;
		Pig?other?=?(Pig)?obj;
		if?(age?!=?other.age)
			return?false;
		if?(name?==?null)?{
			if?(other.name?!=?null)
				return?false;
		}?else?if?(!name.equals(other.name))
			return?false;
		return?true;
	}	
}
public?class?Pig2{
	public?int?age=20;
	public?String?name="pig";	
}
public?class?Initial?{

	public?static?void?main(String[]?args)?{
		Pig?pig=new?Pig();
		Pig2?pig2=new?Pig2();
		if(pig.equals(pig2)){
			System.out.println("相同");
		}else?{
			System.out.println("不相同");
		}
		
	}

}


正在回答

4 回答

http://img1.sycdn.imooc.com//57943c9d00012c7505470880.jpg我剛又問(wèn)了一下我們老師、不同類中的對(duì)象根本就沒(méi)有可比性

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

Edward_Xie 提問(wèn)者

非常感謝!
2016-07-24 回復(fù) 有任何疑惑可以回復(fù)我~

if?(getClass()?!=?obj.getClass())

????????????return?false;

理解這一句的含義。


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

equals()方法比較的是同一個(gè)類中的多個(gè)對(duì)象,你創(chuàng)建了兩個(gè)類,兩個(gè)類中的對(duì)象引用地址肯定不相同啊,代碼?if?(this?==?obj),return?true;就是判斷引用地址是否相同,這一步得到的是false,后面就不再執(zhí)行了,直接到最后運(yùn)行結(jié)果“不相同”、我把視頻里的代碼在eclipse敲出來(lái)了,有注釋,你可以看下。


public class Mk0_4 {


?public static void main(String[] args) {
??Phone p1 = new Phone();
??p1.a = "imooc";
??p1.b = 20;
??p1.c = 3.14f;
??Phone p2 = new Phone();
??p2.a = "imooc";
??p2.b = 20;
??p2.c = 3.14f;
??if(p1.equals(p2)){
???System.out.println("兩個(gè)對(duì)象相同");
??}else{
???System.out.println("兩個(gè)對(duì)象不相同");
??}
?}
}
class Phone{
?String a;
?int b;
?float c;
//比較兩個(gè)對(duì)象中的每一個(gè)值
?public boolean equals(Object obj) {
??if (this == obj)//判斷兩個(gè)引用的值是否相等,即引用的地址是否相同,若引用地址相同,則是同一個(gè)值返回true
???return true;
??if (obj == null)//若一個(gè)對(duì)象的值為空值,則無(wú)意義,返回false
???return false;
??if (getClass() != obj.getClass())//getClass得到的是類對(duì)象,new一個(gè)對(duì)象時(shí),得到的是類的對(duì)象,obj.getClass得到的是類的對(duì)象,此行代碼通過(guò)類對(duì)象判斷兩個(gè)對(duì)象的類型是否相同
???return false;//若兩個(gè)對(duì)象的類型都不相同則肯定不相同,返回false
??Phone other = (Phone) obj;//執(zhí)行到這里則兩個(gè)對(duì)象的類型肯定相同,則可以將傳進(jìn)來(lái)的對(duì)象轉(zhuǎn)換為Phone類型
??if (a == null) {//轉(zhuǎn)換為相同的類型后才可以進(jìn)行屬性比較,若兩個(gè)對(duì)象的屬性值相同,則兩個(gè)對(duì)象相同
???if (other.a != null)
????return false;
??} else if (!a.equals(other.a))
???return false;
??if (b != other.b)
???return false;
??if (Float.floatToIntBits(c) != Float.floatToIntBits(other.c))
???return false;
??return true;
?}
}



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

南山至南

你說(shuō)的不對(duì)吧,if (this == obj),return true;這行代碼判斷了兩個(gè)對(duì)象是否為同一對(duì)象,不論是一個(gè)類創(chuàng)建兩個(gè)對(duì)象,還是兩個(gè)類創(chuàng)建兩個(gè)對(duì)象,這行代碼肯定不會(huì)通過(guò),繼續(xù)執(zhí)行下面代碼進(jìn)行判斷,后邊的代碼怎么不會(huì)執(zhí)行了?
2016-08-03 回復(fù) 有任何疑惑可以回復(fù)我~

equal比較的是兩個(gè)對(duì)象的內(nèi)存地址。因?yàn)閷?shí)例化的兩個(gè)對(duì)象雖然對(duì)象屬性是相同的,但是他們的地址不同,所以equal比較也會(huì)不同

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

Edward_Xie 提問(wèn)者

不好意思,我沒(méi)說(shuō)清楚問(wèn)題,我是用源碼里的改過(guò)的equal,用來(lái)對(duì)比屬性的equal
2016-07-23 回復(fù) 有任何疑惑可以回復(fù)我~
#2

有些人一直都在 回復(fù) Edward_Xie 提問(wèn)者

可以再詳細(xì)的說(shuō)一下你的問(wèn)題嗎,看不太明白你想問(wèn)什么
2016-07-24 回復(fù) 有任何疑惑可以回復(fù)我~
#3

Edward_Xie 提問(wèn)者 回復(fù) 有些人一直都在

如上代碼,我創(chuàng)建了兩個(gè)類,pig和pig2,他們都只有兩個(gè)屬性,age和name,且都初始化為相同的值,然后我重寫(xiě)了pig類中的equals代碼,讓他實(shí)現(xiàn)比較兩個(gè)對(duì)象屬性是否相等的功能,最后在主函數(shù)中創(chuàng)建兩個(gè)類的對(duì)象,用equals對(duì)比的時(shí)候發(fā)現(xiàn)輸出不相同,可是我的兩個(gè)對(duì)象屬性一樣,值也一樣,不知道為什么?是不是只有子類對(duì)象和父類對(duì)象對(duì)比才可能相等?
2016-07-24 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

如視頻教程,若我用父類animal創(chuàng)建一個(gè)對(duì)象dog,,用子類dog創(chuàng)建一個(gè)dog2,并對(duì)兩個(gè)對(duì)象的name和age賦相同的值,用equal方法對(duì)比時(shí)為什么顯示不相同?

我要回答 關(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)