課程
/后端開發(fā)
/Java
/Java入門第三季
字符串是否相等不是用 equals ?嗎?為什么用 ?== ?????
2016-02-03
源自:Java入門第三季 2-2
正在回答
都可以,但是意義可能不同。
舉個(gè)例子:
在String類中,當(dāng)你已經(jīng)在內(nèi)存中定義了s1 = "abc",那么當(dāng)你再次定義一個(gè)s2 = "abc"時(shí),系統(tǒng)就會(huì)自動(dòng)檢測(cè)出"abc"這個(gè)字符串已經(jīng)存在了,此時(shí)系統(tǒng)就不會(huì)給s2重新分配地址值,而是把它直接指向了s1的地址值,使得s1 == s2了;
但是,如果你這樣定義:s1 = "ab";s2 = s1 + "c";那么,s2==s1嗎?就不等于了,在這個(gè)時(shí)候就只能用equals,有==運(yùn)算符就不對(duì)了。
_Jack_Han_
畫師 提問者
==是比較變量指向的對(duì)象內(nèi)存地址,equals方法也是比較對(duì)象的內(nèi)存地址,但是String類的equals方法和HashCode方法被重寫,用來判斷兩個(gè)對(duì)象的類型和值是否相等,也就是字符串的值是否相等(這里可以參考前面Java入門第二季3-9節(jié)),所以這兩個(gè)方法在這里是不同的。
==和equals在比較對(duì)象上本身是相同的,但我們?cè)谑褂胑quals的時(shí)候往往會(huì)重寫equals方法,讓它比較值是否相等。
==是判斷兩個(gè)String對(duì)象的地址(對(duì)象的引用)是否相同,equals是判斷兩個(gè)String內(nèi)容是否相同
首先equals是所有父類Object的比較兩個(gè)對(duì)象內(nèi)容是否相等的方法。==是基本數(shù)據(jù)類型的比較運(yùn)算符,但是==在比較對(duì)象的時(shí)候等價(jià)于equals,第二,書寫相比之下也比較方便。底層的實(shí)現(xiàn)邏輯都是一樣的,不需要糾結(jié)。
舉報(bào)
Java中你必須懂得常用技能,不容錯(cuò)過的精彩,快來加入吧
6 回答輸入一個(gè)字符串,如何比較是否和數(shù)組中的某個(gè)字符串相等?
2 回答為什么不能用getBytes()判斷字符是否相同???
1 回答字符是不是不能用equals啊
2 回答所以什么情況下兩個(gè)字符串對(duì)象相等?用“==”比較。
3 回答為什么判斷ID是否被占用不用equals??
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-02-03
都可以,但是意義可能不同。
舉個(gè)例子:
在String類中,當(dāng)你已經(jīng)在內(nèi)存中定義了s1 = "abc",那么當(dāng)你再次定義一個(gè)s2 = "abc"時(shí),系統(tǒng)就會(huì)自動(dòng)檢測(cè)出"abc"這個(gè)字符串已經(jīng)存在了,此時(shí)系統(tǒng)就不會(huì)給s2重新分配地址值,而是把它直接指向了s1的地址值,使得s1 == s2了;
但是,如果你這樣定義:s1 = "ab";s2 = s1 + "c";那么,s2==s1嗎?就不等于了,在這個(gè)時(shí)候就只能用equals,有==運(yùn)算符就不對(duì)了。
2016-03-10
==是比較變量指向的對(duì)象內(nèi)存地址,equals方法也是比較對(duì)象的內(nèi)存地址,但是String類的equals方法和HashCode方法被重寫,用來判斷兩個(gè)對(duì)象的類型和值是否相等,也就是字符串的值是否相等(這里可以參考前面Java入門第二季3-9節(jié)),所以這兩個(gè)方法在這里是不同的。
2016-03-06
==和equals在比較對(duì)象上本身是相同的,但我們?cè)谑褂胑quals的時(shí)候往往會(huì)重寫equals方法,讓它比較值是否相等。
2016-02-06
==是判斷兩個(gè)String對(duì)象的地址(對(duì)象的引用)是否相同,equals是判斷兩個(gè)String內(nèi)容是否相同
2016-02-03
首先equals是所有父類Object的比較兩個(gè)對(duì)象內(nèi)容是否相等的方法。==是基本數(shù)據(jù)類型的比較運(yùn)算符,但是==在比較對(duì)象的時(shí)候等價(jià)于equals,第二,書寫相比之下也比較方便。底層的實(shí)現(xiàn)邏輯都是一樣的,不需要糾結(jié)。