重写equals方法(详细)equals知识点详细(追源码) equals与==的比较 java

前置知识:Object是顶级类 所有类都继承,是他的子类。在java.lang包中,默认引用lang包

A  a = new A();

A b = a;

A c = b;

此时其实a=b=c:此处的abc均为引用变量,指向的是new的这片地址空间。类似于指针

就算来个A的子类B

B d = c;因为都是指向的同一片内存空间。

因此abcd用==符号来判断,都是true

equals与==对比:

==:既可以判断基本类型,也可以判断引用类型

==:如果是判断基本类型则是判断值是否相等。

==:如果判断引用类型则是判断地址是否相等。即判断是不是同一个对象  。但如果是两个引用类型对象想比较其值是否相等,则必须重写equals方法,==肯定返回false。 

equals:只能判断引用类型是否是指向同一个对象 (即是不是同一个new的内存空间  吗

String重写了equals方法 :如果传入的是String类型,会比较这两个字符串的内容是否相同。 (Integer类型也一样

重写equals的意义:使两个不同的对象,也可以比较其内容是否相同。

重写equals举例:

class Person{
    private String name;
    private int age;

    //重写Object的equals方法
    public boolean equals(Object obj){
        //如果是同一个对象则直接返回true
        if(this == obj){
            return true;
        }
        if(obj instanceof Person)
        {
            Person p = (Person)obj;//将obj向下转型强转为person,把参数一个一个进行比较
            return this.name.equals(p.name) && this.age==p.age;
        }
        return false;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值