先說==??
基礎數據類型,使用==比較的是變量的值。比如int a = 13,int b =14;
a==b//兩個變量的值不相同,返回false
引用數據類型,即對象,比較的是變量的引用地址(內存地址)。比如User u1 = new User();User u2 = new User();
u1==u2//比較兩個變量的引用地址,引用地址不一樣,返回false
再說equals
這個方法是Object的方法,也就說所有對象都會繼承這個方法。
在Object類中equals方法實現為:
public boolean equals(Object obj){
? ? ? ?return (this==obj);
}
可見equals方法實際上也是用的==比較,即比較兩個對象的地址是否相等。
但是,有些類重寫了父類的equals方法,比如String、Date。這些個類實現equals的時候,比較的是內容是否相等。
總結:
1、基礎數據類型 使用==比較的是值是否相等
2、引用數據類型? 使用==比較的是內存地址是否相等
3、對于equals,如果類沒有重寫equals方法,則使用equals和==效果是一致的,即比較內存地址是否相等;
如果類重寫了equals方法,則按照方法重寫邏輯進行比較。比如String,使用equals比較的就是內容是否相等。