python學習23天----正則表示式、字元組、元字元、量詞
Object類是java語言中的根類,所有類的父類,它裡面的所有方法子類都可以使用,一個類沒有指定的父類則預設承認繼承Object類
to String()方法返回物件的字串,返回的內容就是型別和記憶體把地址值,所以需要重寫方法
equals()方法指的是判斷某個物件是否與此物件“相等”,比較的是記憶體地址,返回true或faluse
如果比較的話需要重寫equals和hashcode方法要注意
1,重寫equals方法必須重寫hashcode方法
2,重寫hashcode方法,不需要重寫equals方法
比較兩個物件是否為同一個物件,則需要判斷地址型別和屬性是否一致
equals()方法
Object中的equals方法是直接判斷this和obj本身的值是否相等,即用來判斷呼叫equals的物件和形參obj所引用的物件是否是同一物件,
所謂同一物件就是指記憶體中同一塊儲存單元,如果this和obj指向的hi同一塊記憶體物件,則返回true,如果this和obj指向的不是同一塊記憶體,則返回false。
注意:即便是內容完全相等的兩塊不同的記憶體物件,也返回false。
如果是同一塊記憶體,則object中的equals方法返回true,如果是不同的記憶體,則返回false
如果希望不同記憶體但相同內容的兩個物件equals時返回true,則我們需要重寫父類的equal方法
String類已經重寫了object中的equals方法(這樣就是比較內容是否相等了)
hashCode()方法
返回該物件的雜湊碼值
該方法用於雜湊查詢,可以減少在查詢中使用equals的次數,重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有雜湊功能的Collection中用到。
一般必須滿足obj1.equals(obj2)true。可以推出obj1.hash- Code()obj2.hashCode(),但是hashCode相等不一定就滿足equals。
不過為了提高效率,應該儘量使上面兩個條件接近等價。
如果不重寫hashcode(),在HashSet中新增兩個equals的物件,會將兩個物件都加入進去。