Java中, == 和 equals 的区别

本文介绍了Java中比较运算符==与equals方法的不同用法。==主要用于基本类型和引用类型的比较,而equals是Object类的方法,通常用于比较对象的内容。默认情况下,equals方法与==行为相同,但在子类中通常会重写equals以比较对象属性的值。举例说明了Doctor类重写equals方法后,即使两个对象属性相同,也能正确判断为相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. ==    是一种  比较运算符, 可用于对基本类型的比较,比较两个值是否相等。  也可以用于对引用类型的比较,判断是否为同一个对象。

Doctor doctor1 = new Doctor("jack",20);
Doctor doctor2 = new Doctor("jack",20);

虽然两个对象的属性的内容完全相同,但是他们指向了两个不同的对象,用== 判断结果为false

2 equals  是 Object类中的一个方法,因此Java中所有的类都可以使用equals方法,

它不可用于基本数据类型的比较

可用于引用类型的比较,默认比较两个对象是否相同,是否为同一个对象(效果与 == 相同)

但往往,子类中都重写了equals方法用于比较对象的属性内容是否相同

   public boolean equals(Object obj){
        if(this == obj){
            return true;
        }
        if( ! (obj instanceof Doctor)){
            return false;
        }
        Doctor doctor = (Doctor)obj;
        return this.age == doctor.age && this.name.equals(doctor.name);
    }

上述代码重写equals 方法后

Doctor doctor1 = new Doctor("jack",20);

Doctor doctor2 = new Doctor("jack",20);

两个对象中的属性内容完全相同,调用equals方法返回的就为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值