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