set.add()調用了hashcode(),equals()方法,String類型比較特殊,String類重寫了hashcode方法,而且hashcode方法比較的不是內存地址。而除了String類型的引用類型,則是調用了Object類的hashcode和equals方法,若是該引用類型重寫了hashcode和equals方法,則用重寫後的hashcode和equals方法code
Person類未重寫hashcode和equals方法,也就是說調用Object類的hashcode和equals方法內存
參看源碼:源碼
只要是new,對應的引用類型:如Person未重寫equals方法,那麼必定返回falsehash