set.add()调用了hashcode(),equals()方法,String类型比较特殊,String类重写了hashcode方法,并且hashcode方法比较的不是内存地址。而除了String类型的引用类型,则是调用了Object类的hashcode和equals方法,如果该引用类型重写了hashcode和equals方法,则用重写后的hashcode和equals方法
Person类未重写hashcode和equals方法,也就是说调用Object类的hashcode和equals方法
参看源码:
只要是new,对应的引用类型:如Person未重写equals方法,那么一定返回false