Java深入理解equals和==

本文介绍了Java中基本类型与引用类型使用`==`判断相等的区别,以及如何为自定义类型Dog正确实现equals方法来比较两个对象的内容是否相等。示例代码展示了当属性改变时equals方法返回结果的变化,强调了equals方法在比较对象属性时的重要性。
摘要由CSDN通过智能技术生成

1、基本类型使用==判断是否相等

2、引用使用==判断是否指向同一个对象

3、使用equals判断2个对象是否相等

因为Dog是自己创建的类型,所以需要自己实现equals函数,不然默认是判断两个引用是否指向同一个对象

public class Dog {
    String name;
    int a;
    double b;

    Dog() {
        name = "狗狗";
    }

    public void bark() {
        System.out.println("Ruf!Ruf!");
    }

    @Override
    public boolean equals(Object obj) {
        Dog d = (Dog) obj;
        if (name.equals(d.name) && a == d.a && b == d.b) {
            return true;
        } else {
            return false;
        }

    }
}
public class App {
    public static void main(String[] args) throws Exception {
        // App app = new App();
        Dog d = new Dog();
        Dog c = d;
        Dog e = new Dog();
        System.out.println(d == c);
        System.out.println(d == e);
        System.out.println(d.equals(e));

        System.out.println("---------");
        d.name = "test";
        System.out.println(d.equals(e));
    }

}

true
false
true
---------
false 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值