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

Java--“==”和 equals()方法

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

Java--“==”和 equals()方法

Object类是所有Java类的根基类

Object类中equals() 方法源码如下:

public boolean equals(Object obj) {

    return (this == obj);

}

1、"==" 双等号 的作用是判断两个对象的内存地址是不是相等

即判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)

2、equals()方法 : 它的作用也是判断两个对象是否相等。

但它一般有两种使用情况:

1、类没有覆盖/重写equals()方法,继承自Object类,则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象(比较对象的内存地址)

2、类覆盖了equals()方法。一般,我们都覆盖equals()方法来比较两个对象的内容相等;若它们的内容相等,则返回true(即,认为这两个对象相等)

如果是基本变量,没有equals方法,基本变量的比较方式就只有 ==

如果是变量,由于在java中所有变量定义都是一个指向,内存地址,在这里==是比较两个对象的内存地址,而不是实际内存中的内容,如果要比较实际内存中的内容,那就要用equals方法

如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较内存地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的,通过上述源码

我们举例如下:

创建一个People类对象

public class People {
    private String name;

    public People() {
    }

    public People(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    //比较内容是否相等
    public boolean equals(Object obj){
        if (obj == null || !(obj instanceof People)) return false;
        if (this == obj) return true;
        People people = (People) obj;
        return  (this.name.equals(people.name));
    }
}

我们重写其equals()方法,根据名字是否相同来判断两个对象是否相等 

        People people1 = new People("张三");
        People people2 = new People("张三");

        
        System.out.println("people1和people2是否相等:" + people1.equals(people2));//true

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

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

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