1、超类Object的equals()底层原理:
在Object超类中已经提供了equals()方法,源码如下:
public boolean equals(Object obj) { return (this == obj); }
所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较的是两个对象的内存地址,在Object的equals()底层调用的是==号,所以说Object的equals()是比较两个对象的内存地址是否相等,如果为true,则表示的引用的是同一个对象。
2、equals()与 == 的区别:
(1)== 号在比较基本数据类型时比较的是数据的值,而比较引用类型时比较的是两个对象的地址值;
(2)equals()不能用于基本的数据类型,对于基本的数据类型要用其包装类。
(3)默认情况下,从Object继承而来的 equals 方法与 “==” 是完全等价的,比较的都是对象的内存地址,因为底层调用的是 “==” 号,但我们可以重写equals方法,使其按照我们的需求方式进行比较,如String类重写equals()方法,使其比较的是字符的内容,而不再是内存地址。
String类重写的equals源码如下:
public boolean equals(Object anObject) {
//判断调用equals方法的对象和 形参引用地址是否相等
if (this == anObject) {

最低0.47元/天 解锁文章
1895

被折叠的 条评论
为什么被折叠?



