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