Java中==和equals()方法的比较

标题Java中==和equals()方法的比较

Java中判断数据是否相等有两种方式,分别是==和equals()方法。

  1. ==分为两种情况:
    第一种:如果判断的是两个基本数据类型的数据,则比较的是值是否相等。
    第二种:如果判断的是两个引用数据类型的数据,则比较的是两个引用的地址是否相等。

  2. equals()方法:
    equals()方法是Object类中的方法,我们自定义类使用equals()方法时需重写,这是因为在Object类中,equals()方法使用 == 来判断两个数据是否相等,如果我们自定义类时直接调用Object类中的equals()方法,和使用 == 判断没有什么区别。使用==判断引用数据类型时必须两个引用的地址相同才算两个数据相等,而实际上我们在很多时候比较两个引用时,只需要他们对应的属性相等就认为这两个引用相等。比如我们定义了一个People类,该类中有账号和密码两个int型属性,我们只需要new出来的两个People类的对象的账号和密码都分别相等就认为这两个对象相等,如果使用双等号判断的是new出来的两个对象的地址是否相等。
    我们先来看Object类中equals()方法是怎么实现的:
    在这里插入图片描述
    再看一下String类中是如何重写equals()方法的,给我们提供一些思路:
    在这里插入图片描述
    接下来是我自己的People类和测试代码:

class People{
    int id;//账号
    int password;//密码
    public People(int id,int password) {
        this.id = id;
        this.password=password;
    }
    @Override
    public boolean equals(Object obj) {
        if(this==obj) {
            return true;
        }
        if(obj instanceof People) {//判断比较的是否是People类的对象
            return (id == ((People) obj).id)&&(password == ((People) obj).password);//账号和密码都相同才返回true
        }
        return false;
    }
}
public class EqualsTest {
    public static void main(String[] args) {
        People p1=new People(1,123);
        People p2=new People(1,123);
        People p3=new People(1,456);
        People p4=new People(2,456);
        System.out.println(p1.equals(p2));//账号密码都相等,打印结果为true
        System.out.println(p1.equals(p3));//账号相等,密码不相等,打印结果为false
        System.out.println(p3.equals(p4));//账号不相等,密码相等,打印结果为false
    }
}

如果注释掉重写的equals()方法,打印结果都为false,这就是调用了Object类中equals()方法,可以看出比较的是对象的地址。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值