2021.03.23:equals方法
一:前面学习了HashCode方法,现在看看这俩个的区别
hashcode与equals方法
我们equals比较的是内存地址是否相同,hashcode比较的是哈希表的地址是否相同。
当我们new俩个对象的时候这俩个对象的属性值一样,此时我们需要重写equals方法,重写equals方法是写的判断俩个对象属性值是否相同,如果相同就返回true,那么我们重写了equals方法后就需要重写hashcode方法,此方法也是写了通过属性值来求得hashcode的值,所以这样俩个属性相同的对象就可以判断hashcode与equals相同了。
二:以前一直迷惑==与equals方法的区别,现在明白点说说
1.首先我们用==判断是否相同,判断的是地址是否相同,
2.这个时候用equals判断是否相同又需要区分了
a.当String来判断是否相同,我们比较的是内容是否相同,因为String底层重写了equals方法。(重写equals就是将比较内容是否相同)
b.当我们用没有重写的equals方法的时候,比较的也是地址是否相同
三:这里再次说一下
“==”比较的是两个引用的对象是否相等,而equals()方法比较的是两个对象的实际内容(指我们重写equlas方法后,一个属性一个的比较)
==比较的是值,
==如果比较的是基本数据类型,比较的则是变量值
==如果比较的是引用数据类型,比较的则是地址值
equals比较的是引用数据类型
如果没有重写hashCode和equals方法,比较的是地址值,因为Object的equals方法中使用是==
如果重写hashcode和equals方法,则比较的是内容
用来说明一下==比较的是俩个引用的对象是否相等(告诫自己java虚拟机要学习哦)
说明一下为啥equals没有重写的是比较的是地址值(因为底层用的==)