栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

有关equals方法重写知识点

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有关equals方法重写知识点

“==”和equals 区别:
    “==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。
equals是Object类中的方法,所有java类都直接或者间接继承object类,它比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。     特别的:像String、Date、File、包装类中都重写了object中的equals()方法,这时候他们比较的就不是指向的地址值了,而是对象本身指向的实体内容。
“==”是运算符
①如果比较的对象是基本数据类型,则比较的是其存储的值是否相等;
②如果比较的是引用数据类型,则比较的是所指向对象的地址值是否相等(是否是同一个对象)。 equals();
equals是Object的方法,如果没有被重写就是用来比较两个对象的内容是否相等。
方法如下: 基本类型和引用类型的区别:    基本类型有八个:byte int double float short long char boolean    而引用类型,可以简单理解为就是对象(例如String、date类等)。
public boolean equals(Object obj) {
        return (this == obj);
    }


注意:
equals 方法不能用于比较基本数据类型,如果没有对 equals 方法进行重写,则相当于“==”,比较的是引用类型的变量所指向的对象的地址值。 一般情况下,类会重写equals方法用来比较两个对象的内容是否相等。比如String类中的equals()是被重写了,比较的是对象的值。

String类中重写equals源码:
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}
笔记:String类的底层其实是char数组。 总结 :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;  而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。 在上面代码中,(下面的代码是上面代码中截取的片段)
if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
在代码的第二行我们为什么要进行强转呢?
原因:要将要比较的对象向下转换,这样才能访问子类的方法,才能比较子类的方法 instanceof是什么? instanceof 作用是:判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。 在上面代码中,第一行的 instanceof 判断——> 判断 anobject 和 String是否为同一类型的类, 不是的话就不能相比较,自然不相同

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/981260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号