課程
/后端開發(fā)
/Java
/Java入門第一季(IDEA工具)升級(jí)版
equals是干什么用的?一般用在哪個(gè)位置?在下看講解看的不太懂。
2016-08-05
源自:Java入門第一季(IDEA工具)升級(jí)版 4-4
正在回答
1. == 是一個(gè)運(yùn)算符。 2.Equals則是string對(duì)象的方法,可以.(點(diǎn))出來(lái)。 我們比較無(wú)非就是這兩種 1、基本數(shù)據(jù)類型比較 ?2、引用對(duì)象比較 1、基本數(shù)據(jù)類型比較 ==和Equals都比較兩個(gè)值是否相等。相等為true 否則為false; 2、引用對(duì)象比較 ==和Equals都是比較棧內(nèi)存中的地址是否相等 。相等為true 否則為false; 需注意幾點(diǎn): 1、string是一個(gè)特殊的引用類型。對(duì)于兩個(gè)字符串的比較,不管是 == 和 Equals 這兩者比較的都是字符串是否相同; 2、當(dāng)你創(chuàng)建兩個(gè)string對(duì)象時(shí),內(nèi)存中的地址是不相同的,你可以賦相同的值。 所以字符串的內(nèi)容相同。引用地址不一定相同,(相同內(nèi)容的對(duì)象地址不一定相同),但反過(guò)來(lái)卻是肯定的; 3、基本數(shù)據(jù)類型比較(string 除外) == 和 Equals 兩者都是比較值
equals() 用于確定兩個(gè)對(duì)象的引用是否相同,而在String中equals()方法被進(jìn)行了覆蓋,使其意義變?yōu)楸容^兩個(gè)對(duì)象的內(nèi)容是否一致。可以根據(jù)自己的需要去重寫equals() 和hashcode()方法去實(shí)現(xiàn)自己設(shè)定的比較標(biāo)準(zhǔn)。
equals() 用于確定兩個(gè)對(duì)象的引用是否相同,而在String中equals()方法被進(jìn)行了覆蓋,使其意義變?yōu)楸容^兩個(gè)對(duì)象的內(nèi)容是否一致??梢愿鶕?jù)自己的需要去重寫equals() 和hashcode()方法去實(shí)現(xiàn)自己設(shè)定的比較標(biāo)準(zhǔn)。
equals方法對(duì)于字符串來(lái)說(shuō)是比較內(nèi)容的,而對(duì)于非字符串來(lái)說(shuō)是比較其指向的對(duì)象是否相同的。
兩段代碼體會(huì)一下
第一段代碼-非字符串:
class A
{
?? A obj1?? =???new? A();
??? A obj2?? =? ?new? A();
}
那么:? obj1==obj2是false
??????????? obj1.equals(obj2)是false
但是如加上這樣一句:obj1=obj2;
那么? obj1==obj2? 是true
????????? obj1.equals(obj2) 是true
第二段代碼-字符串:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
?那么:s1==s2? ?是 false????? //兩個(gè)變量的內(nèi)存地址不一樣,也就是說(shuō)它們指向的對(duì)象不?一樣,故不相等。
s1.equals(s2) 是 true????//兩個(gè)變量的所包含的內(nèi)容是abc,故相等。
題主需要注意? equals 方法是 java.lang.Object 類的方法
看這種情況:
如果:??? StringBuffer s1 = new StringBuffer("a");????????????? StringBuffer s2 = new StringBuffer("a");????????????????????
結(jié)果:??? s1.equals(s2)? //是false
解釋:StringBuffer類中沒(méi)有重新定義equals這個(gè)方法,因此這個(gè)方法就來(lái)自O(shè)bject類,而Object類中的equals方法是用來(lái)比較“地址”的,所以等于false.
如有誤,請(qǐng)指出,多多交流!
1、java中equals和==的區(qū)別 值類型是存儲(chǔ)在內(nèi)存中的堆棧(簡(jiǎn)稱棧),而引用類型的變量在棧中僅僅是存儲(chǔ)引用類型變量的地址,而其本身則存儲(chǔ)在堆中。 2、==操作比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量在堆中存儲(chǔ)的地址是否相同,即棧中的內(nèi)容是否相同。 3、equals操作表示的兩個(gè)變量是否是對(duì)同一個(gè)對(duì)象的引用,即堆中的內(nèi)容是否相同。 4、==比較的是2個(gè)對(duì)象的地址,而equals比較的是2個(gè)對(duì)象的內(nèi)容,顯然,當(dāng)equals為true時(shí),==不一定為true。
這要到后面對(duì)象才細(xì)說(shuō),現(xiàn)在大概了解下把。
舉報(bào)
0基礎(chǔ)萌新入門第一課,從Java環(huán)境搭建、工具使用、基礎(chǔ)語(yǔ)法開始
1 回答關(guān)于equals的用法
3 回答equals等于==,過(guò)得了,會(huì)有問(wèn)題嗎
3 回答String類的“==”以及equals()問(wèn)題
1 回答String和.equals的關(guān)系
4 回答關(guān)于 = 的問(wèn)題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-08-05
1. == 是一個(gè)運(yùn)算符。
2.Equals則是string對(duì)象的方法,可以.(點(diǎn))出來(lái)。
我們比較無(wú)非就是這兩種 1、基本數(shù)據(jù)類型比較 ?2、引用對(duì)象比較
1、基本數(shù)據(jù)類型比較
==和Equals都比較兩個(gè)值是否相等。相等為true 否則為false;
2、引用對(duì)象比較
==和Equals都是比較棧內(nèi)存中的地址是否相等 。相等為true 否則為false;
需注意幾點(diǎn):
1、string是一個(gè)特殊的引用類型。對(duì)于兩個(gè)字符串的比較,不管是 == 和 Equals 這兩者比較的都是字符串是否相同;
2、當(dāng)你創(chuàng)建兩個(gè)string對(duì)象時(shí),內(nèi)存中的地址是不相同的,你可以賦相同的值。
所以字符串的內(nèi)容相同。引用地址不一定相同,(相同內(nèi)容的對(duì)象地址不一定相同),但反過(guò)來(lái)卻是肯定的;
3、基本數(shù)據(jù)類型比較(string 除外) == 和 Equals 兩者都是比較值
2016-08-05
equals() 用于確定兩個(gè)對(duì)象的引用是否相同,而在String中equals()方法被進(jìn)行了覆蓋,使其意義變?yōu)楸容^兩個(gè)對(duì)象的內(nèi)容是否一致。可以根據(jù)自己的需要去重寫equals() 和hashcode()方法去實(shí)現(xiàn)自己設(shè)定的比較標(biāo)準(zhǔn)。
2016-08-05
equals() 用于確定兩個(gè)對(duì)象的引用是否相同,而在String中equals()方法被進(jìn)行了覆蓋,使其意義變?yōu)楸容^兩個(gè)對(duì)象的內(nèi)容是否一致??梢愿鶕?jù)自己的需要去重寫equals() 和hashcode()方法去實(shí)現(xiàn)自己設(shè)定的比較標(biāo)準(zhǔn)。
2016-08-05
equals方法對(duì)于字符串來(lái)說(shuō)是比較內(nèi)容的,而對(duì)于非字符串來(lái)說(shuō)是比較其指向的對(duì)象是否相同的。
兩段代碼體會(huì)一下
第一段代碼-非字符串:
class A
{
?? A obj1?? =???new? A();
??? A obj2?? =? ?new? A();
}
那么:? obj1==obj2是false
??????????? obj1.equals(obj2)是false
但是如加上這樣一句:obj1=obj2;
那么? obj1==obj2? 是true
????????? obj1.equals(obj2) 是true
第二段代碼-字符串:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
?那么:s1==s2? ?是 false????? //兩個(gè)變量的內(nèi)存地址不一樣,也就是說(shuō)它們指向的對(duì)象不?一樣,故不相等。
s1.equals(s2) 是 true????//兩個(gè)變量的所包含的內(nèi)容是abc,故相等。
題主需要注意? equals 方法是 java.lang.Object 類的方法
看這種情況:
如果:??? StringBuffer s1 = new StringBuffer("a");
????????????? StringBuffer s2 = new StringBuffer("a");????????????????????
結(jié)果:??? s1.equals(s2)? //是false
解釋:StringBuffer類中沒(méi)有重新定義equals這個(gè)方法,因此這個(gè)方法就來(lái)自O(shè)bject類,而Object類中的equals方法是用來(lái)比較“地址”的,所以等于false.
如有誤,請(qǐng)指出,多多交流!
2016-08-05
1、java中equals和==的區(qū)別 值類型是存儲(chǔ)在內(nèi)存中的堆棧(簡(jiǎn)稱棧),而引用類型的變量在棧中僅僅是存儲(chǔ)引用類型變量的地址,而其本身則存儲(chǔ)在堆中。
2、==操作比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量在堆中存儲(chǔ)的地址是否相同,即棧中的內(nèi)容是否相同。
3、equals操作表示的兩個(gè)變量是否是對(duì)同一個(gè)對(duì)象的引用,即堆中的內(nèi)容是否相同。
4、==比較的是2個(gè)對(duì)象的地址,而equals比較的是2個(gè)對(duì)象的內(nèi)容,顯然,當(dāng)equals為true時(shí),==不一定為true。
2016-08-05
這要到后面對(duì)象才細(xì)說(shuō),現(xiàn)在大概了解下把。