Java String 重写 equal() hashCode()学习笔记 2022-3-19
String类重写了equals()方法
Object的equals()方法,本意是比较两个对象的内存地址是否相同,准确地说,比较两个引用变量指向的地址是否相同
String重写后的equals()方法,则是来比较两个字符串是否“相同”
equals()方法源码如下:
分析
先比较两个对象的内存地址是否相同;如果相同,直接返回true;
如果不同,再在if(object instanceof String){}的判断语句内,判断两个字符串对象内部的字符数组的长度是否相同,如果不是,返回false;
如果是,则0开始,逐个字符比较
思考:为什么重写equals()方法,还要重写hashCode()方法?
hashCode()是一个本地方法,本来的作用:将对象的内存地址转化成int型整数并返回;
Java规定,equals()方法与hashCode()方法应满足三点:1、2、3:
重写hashCode()方法,抛弃其原本的作用,遵守Java约定