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

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

正在回答

5 回答

在比較數(shù)值時(shí),==和equals方法的作用是一樣的;比較對象時(shí),==比較兩個(gè)對象的內(nèi)存地址是否相同(即是否為同一個(gè)對象),而equals方法大部分時(shí)候會(huì)被重寫,用來比較兩個(gè)對象的內(nèi)容是否相同

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

==操作符專門用來比較兩個(gè)變量的值是否相等,也就是用于比較變量所對應(yīng)的內(nèi)存中所存儲(chǔ)的數(shù)值是否相同,要比較兩個(gè)基本類型的數(shù)據(jù)或兩個(gè)引用變量是否相等,就只能用==操作符。

如果一個(gè)變量指向的數(shù)據(jù)是對象類型的,那么,這時(shí)候涉及了兩塊內(nèi)存,對象本身占用一塊內(nèi)存(堆內(nèi)存),變量也占用一塊內(nèi)存,例如Object obj = new Object(); 變量obj是一塊內(nèi)存,new Object()是另一塊內(nèi)存,此時(shí),變量obj所對應(yīng)的內(nèi)存中存儲(chǔ)的數(shù)值就是對象占用的那塊內(nèi)存的首地址。對于指向?qū)ο箢愋偷淖兞?,如果要比較兩個(gè)變量是否指向同一個(gè)對象,即要看這兩個(gè)變量所對應(yīng)的內(nèi)存中的數(shù)值是否相等,這時(shí)候就需要用==操作符進(jìn)行比較。

equals方法是用于比較兩個(gè)獨(dú)立對象的內(nèi)容是否相同,就好比比較兩個(gè)人的長相是否相同,它比較的兩個(gè)對象是獨(dú)立的。例如,對于下面的代碼:

String a = new String("foo");

String b = new String("foo");

兩條new語句創(chuàng)建了兩個(gè)對象,然后用a/b這兩個(gè)變量分別指向了其中一個(gè)對象,這是兩個(gè)不同的對象,他們的首地址是不同的,即a和b中存儲(chǔ)的數(shù)值是不同的,所以,表達(dá)式a==b將返回false,而這兩個(gè)對象中內(nèi)容是相同的,所以表達(dá)式a.equals(b)將返回true。

注意:字符串的比較基本都是使用equals方法,雖然很多地方錯(cuò)寫成使用==。建議在自己定義的類中重寫equals方法,由自己決定什么情況下認(rèn)為兩個(gè)對象的內(nèi)容是相同的,不然該類會(huì)繼承Object類的equals方法:

boolean equals(Object o)

{

????return this == o;

}

也是比較兩個(gè)變量是否指向同一個(gè)對象,顯然,這在大多數(shù)時(shí)候并不是我們想要的。

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

==比較的是地址

equals 是個(gè)方法 你怎么定義的 他就比較什么 可以比較任意內(nèi)容 在沒定義equals的情況下默認(rèn)調(diào)用的就是== 比較的是地址

1 回復(fù) 有任何疑惑可以回復(fù)我~
?public?boolean?equals(Object?anObject)?{
????????if?(this?==?anObject)?{
????????????return?true;
????????}
????????if?(anObject?instanceof?String)?{
????????????String?anotherString?=?(String)?anObject;
????????????int?n?=?value.length;
????????????if?(n?==?anotherString.value.length)?{
????????????????char?v1[]?=?value;
????????????????char?v2[]?=?anotherString.value;
????????????????int?i?=?0;
????????????????while?(n--?!=?0)?{
????????????????????if?(v1[i]?!=?v2[i])
????????????????????????????return?false;
????????????????????i++;
????????????????}
????????????????return?true;
????????????}
????????}
????????return?false;
????}

上面這個(gè)是String的equals()方法.

在對String類型的對比中,equals()首先對兩個(gè)String變量進(jìn)行==號(hào)運(yùn)算,也就是說,首先對兩個(gè)String變量的地址進(jìn)行對比,如果地址不一樣(也就是引用),就進(jìn)行兩個(gè)String變量的值進(jìn)行對比.

==比較的是2個(gè)對象的地址,而equals比較的是2個(gè)對象的內(nèi)容,顯然,當(dāng)equals為true時(shí),==不一定為true。

自己對源碼的理解,有些回答欠妥的地方.

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

== 和 equals 的區(qū)別
  1. == 是一個(gè)運(yùn)算符。
  2.equals則是string對象的方法,可以.(點(diǎn))出來。
  
  我們比較無非就是這兩種 1、基本數(shù)據(jù)類型比較 2、引用對象比較
  1、基本數(shù)據(jù)類型比較
  ==和equals都比較兩個(gè)值是否相等。相等為true 否則為false;
  
  2、引用對象比較
  ==和equals都是比較棧內(nèi)存中的地址是否相等 。相等為true 否則為false;
  
  需注意幾點(diǎn):
  1、string是一個(gè)特殊的引用類型。對于兩個(gè)字符串的比較,不管是 == 和 Equals 這兩者比較的都是字符串是否相同;
  2、當(dāng)你創(chuàng)建兩個(gè)string對象時(shí),內(nèi)存中的地址是不相同的,你可以賦相同的值。
  所以字符串的內(nèi)容相同。引用地址不一定相同,(相同內(nèi)容的對象地址不一定相同),但反過來卻是肯定的;
  3、基本數(shù)據(jù)類型比較(string 除外) == 和 equals 兩者都是比較值;

其實(shí)java第二季會(huì)講到這個(gè)問題滴~~~有視頻的,親~~~

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

舉報(bào)

0/150
提交
取消
Java入門第二季 升級(jí)版
  • 參與學(xué)習(xí)       531098    人
  • 解答問題       6280    個(gè)

課程升級(jí)!以終為始告別枯燥,在開發(fā)和重構(gòu)中體會(huì)Java面向?qū)ο缶幊痰膴W妙

進(jìn)入課程

==跟equals的區(qū)別是什么?

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

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

幫助反饋 APP下載

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

公眾號(hào)

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