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