==
== 是Java中的運(yùn)算符蚓炬。對于基礎(chǔ)數(shù)據(jù)類型是比較的是兩個(gè)變量的值是否相等,對于引用型變量表示的是兩個(gè)變量在堆中存儲的地址是否相同躺屁,即棧中的內(nèi)容是否相同肯夏。
equal()
equal()是object類中的方法,是用來比較兩個(gè)對象內(nèi)部的內(nèi)容是否相等的犀暑,由于所有的類都是繼承自java.lang.Object類的驯击,所以如果沒有對該方法進(jìn)行重寫的話,調(diào)用的仍然是Object類中的方法耐亏,而Object中的equal方法返回的卻是==的判斷徊都,因此,如果在沒有進(jìn)行該方法的覆蓋后广辰,調(diào)用該方法就和==一樣暇矫。在java面向?qū)ο蟮奶幚碇形覀円话阍趈avabean中都要選擇重寫equals方法,使用hibernate后轨域,我們要生成數(shù)據(jù)庫的映射文件與實(shí)體類袱耽,這是我們就最好在實(shí)體類中進(jìn)行equals方法的重寫,重寫時(shí)我們可以根據(jù)自己的定義來實(shí)現(xiàn)該方法只要遵守那五條原則
1干发、自反性:對任意引用值X朱巨,x.equals(x)的返回值一定為true.
2、對稱性:對于任何引用值x,y,當(dāng)且僅當(dāng)y.equals(x)返回值為true時(shí)枉长,x.equals(y)的返回值一定為true;
3冀续、傳遞性:如果x.equals(y)=true, y.equals(z)=true,則x.equals(z)=true
4、一致性:如果參與比較的對象沒任何改變必峰,則對象比較的結(jié)果也不應(yīng)該有任何改變
5洪唐、非空性:任何非空的引用值X,x.equals(null)的返回值一定為false
String重寫了equal()方法吼蚁,比較的不再是引用凭需,而是比較的值是否相同
如果沒重寫equal()方法的話,equal()和==一樣都是比較在堆中存儲的地址是否相同肝匆,重寫equal()大部分都是比較是否是對同一對象的引用粒蜈。
對于String ,基本類型的包裝類型Boolean、Character旗国、Byte枯怖、Shot、Integer能曾、Long度硝、Float肿轨、Double。equal()表示比較內(nèi)容 蕊程。
一般api中繼承object的類都已重寫equal對內(nèi)容進(jìn)行比較椒袍。