在比较 8个基本数据类型 的时候, 必须要使用“==”来比较,比较数值是否相等。
在比较8个基本数据类型的包装类对象和String类对象的时候,equals()方法都有重写,此时equals()是比较值的。“==”是比较地址的。
1、“==”比较的是两个对象的内容和在内存中的地址值是否全部相等,如果要比较两个基本数据类型,那必须要用“==”来比较。
2、“equals()”是Object类中的一个方法。重写之前,他在jdk中源码也是用“==”比较的;重写之后,则会会按照重写的内容进行比较。
(图为equals在jdk中的源码),
javaBean规定当重写equals的时候必须重写hashCode。如果不重写的话,会出现对象相同但是hashCode不同,这样会导致一些问题,例如:HashSet在存储元素的时候是按照hashCode,如果重写equals而不重写hashCode会导致同一个对象,存储了两次!
HashSet集合在存储的时候是先比较两个对象的HashCode。
1、如果哈希值是不一样,直接认为两个对象不一样,equals方法不起作用。
2、如果哈希值是一样,再调用元素对象的equals方法,查看两个对象的内容是否一样。
{1}. 如果equlas比较的值一样,说明两个对象相同,不能添加到HashSet对应的集合中。
{2}. 如果equlas比较的值不一样,说明两个对象不同,可以添加到HashSet对应的集合中