IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
對(duì)于比較,在我們的第一反應(yīng)中就是第一個(gè)與第二個(gè)是否相等,在Java開發(fā)語(yǔ)言中,我們經(jīng)常是使用雙等號(hào)“==”來進(jìn)行兩個(gè)變量的判斷,比如3==3為正確(true),但是在Java中使用“==”進(jìn)行字符串判斷的時(shí)候,有時(shí)候兩個(gè)變量明明都是一模一樣的,但是他的結(jié)果卻一直是不相等(false),所以對(duì)于新手開發(fā)者來說,經(jīng)常會(huì)感到迷惑。通常在我們開發(fā)的時(shí)候,經(jīng)常使用的比較方法為a.equals(b)來進(jìn)行判斷兩個(gè)字符串是否相等。
在Java中,使用“==”一般比較的是兩個(gè)變量的地址,也就是說這兩個(gè)變量是在同一個(gè)內(nèi)存單元存儲(chǔ),他們的結(jié)果才會(huì)相等,對(duì)于兩個(gè)字符串String a = "1234"; String b = "1234";對(duì)于這兩個(gè)變量a和b,當(dāng)時(shí)用“==”和使用a.equals(b)的時(shí)候,他們的結(jié)果都是相等的,因?yàn)閍和b兩個(gè)字符串后是兩個(gè)字符串常量,他們?cè)趦?nèi)存中的存儲(chǔ)是在同一個(gè)地方,所以使用“==”和a.equals(b)兩個(gè)結(jié)果都是相等的;
但是對(duì)于String a = new String("1234); String b = new String("1234");雖然a和b的結(jié)果都是“1234”,但是使用“==”進(jìn)行判斷的時(shí)候,得到的結(jié)果卻是不相等的,因?yàn)榇藭r(shí)的a和b是兩個(gè)對(duì)象,他們所存在的內(nèi)存位置不相等,所以“==”他的判斷也就是不相等的了,此時(shí)使用a.equals(b)的到的結(jié)果就是正確的;
之所以使用a.equals(b)的結(jié)果是判斷出兩個(gè)字符串一樣,是因?yàn)镾tring類重寫了equal()的方法,他的比較方法是循環(huán)遍歷兩個(gè)字符串中的每個(gè)字符,只有當(dāng)兩個(gè)字符串中每個(gè)位置上的字符都一樣的時(shí)候,這個(gè)方法返回的值才會(huì)是相等(true);
因此在我們開發(fā)過程中,遇到字符串的比較,使用字符串的equals()的方法進(jìn)行判斷,這樣會(huì)減少很多的bug;同樣不僅僅對(duì)于字符串的比較,對(duì)于任何兩個(gè)對(duì)象的比較,我們都可以使用equal()方法;
>>本文地址:http://www.yiyunku.cn/zhuanye/2020/48331.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?