色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

和equals的區(qū)別

和equals的區(qū)別?

解釋一下==號(hào),他比較的是一個(gè)對(duì)象在內(nèi)存中的地址值,

比如2個(gè)字符串對(duì)象

String s1 = new String("str");

String s2 = new String("str");

如果用==號(hào)比較,會(huì)返回false,因?yàn)閯?chuàng)建了兩個(gè)對(duì)象,他們?cè)趦?nèi)存中地址的位置是不一樣的。

equals的情況比較復(fù)雜,它是java.lang.Object類(lèi)中的一個(gè)方法。因?yàn)閖ava中所有的類(lèi)都默認(rèn)繼承于Object,所以所有的類(lèi)都有這個(gè)方法。

在Object類(lèi)源碼中是這樣寫(xiě)的。

public boolean equals(Object obj) {

return (this == obj);

}

他同樣使用==號(hào)進(jìn)行內(nèi)存地址的比較。但是許多java類(lèi)中都重寫(xiě)了這個(gè)方法,比如String。

public boolean equals(Object anObject) {

if (this == anObject) {

return true;

}

if (anObject instanceof String) {

String anotherString = (String)anObject;

int n = count;

if (n == anotherString.count) {

char v1[] = value;

char v2[] = anotherString.value;

int i = offset;

int j = anotherString.offset;

while (n-- != 0) {

if (v1[i++] != v2[j++])

return false;

}

return true;

}

}

return false;

}

String里的方法,如果==號(hào)比較不相等,還會(huì)進(jìn)行一下值的比較。

所以equals方法具體的作用要看當(dāng)前的那個(gè)類(lèi)是如何實(shí)現(xiàn)重寫(xiě)父類(lèi)中該方法的。如果沒(méi)有重寫(xiě)該方法,那么他和==號(hào)等價(jià)。

java和equals,和equals的區(qū)別