day18 Set集合_引用类型

 

day18 Set集合_引用类型_02

day18 Set集合_内存地址_03

set.add()调用了hashcode(),equals()方法,String类型比较特殊,String类重写了hashcode方法,并且hashcode方法比较的不是内存地址。而除了String类型的引用类型,则是调用了Object类的hashcode和equals方法,如果该引用类型重写了hashcode和equals方法,则用重写后的hashcode和equals方法

day18 Set集合_引用类型_04

Person类未重写hashcode和equals方法,也就是说调用Object类的hashcode和equals方法

参看源码:

day18 Set集合_引用类型_05

只要是new,对应的引用类型:如Person未重写equals方法,那么一定返回false

day18 Set集合_引用类型_06

day18 Set集合_内存地址_07