equals里面的equals為啥work?
重寫equals方法,最后一個if判斷:if (this.name.equals(cr.name)) 這里用到的equals方法是原始的么?為什么這兩個名字的判斷會給出true的可能,按原始定義,兩個不一樣的對象不是應(yīng)該返回false么,即使內(nèi)容一樣?
重寫equals方法,最后一個if判斷:if (this.name.equals(cr.name)) 這里用到的equals方法是原始的么?為什么這兩個名字的判斷會給出true的可能,按原始定義,兩個不一樣的對象不是應(yīng)該返回false么,即使內(nèi)容一樣?
2016-06-14
舉報
2016-06-22
你的理解一部分對,一部分不恰當(dāng)。
其實就是String是簡單的引用類型,所以用equals時,程序內(nèi)部知道去判斷兩個字符串中的一系列字符是否一樣,從而得到判斷結(jié)果,但是遇到一個復(fù)雜點的對象,計算機不知道我們認(rèn)定的“相同”的判斷規(guī)則,所以需要我們覆寫這個equals方法。想想如果各種類型都能夠判斷的話,計算機需要做的工作太復(fù)雜了。比如一個對象有十個屬性,他就需要去分別比較每個屬性的值,如果每個屬性又都是復(fù)雜的類型,那比較工作就一套嵌一套,沒完沒了了。效率是不是很低呢?所以根據(jù)用戶需求自己去覆寫是最好的了。
equals:判斷值是否相同。
? ==??? :判斷地址是否相同。
對于String類型的,如果你利用他的構(gòu)造函數(shù)創(chuàng)建String對象,即使兩個值相同,用==也是不相等滴!他們兩個本質(zhì)上是不一樣的奧~
2016-06-15
是原始的
對象之間的判斷是用==號,而equals方法是用來判斷字符串中的內(nèi)容是否相等。
不知對否,第一次回答問題。