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

== 与 equals 的区别

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

== 与 equals 的区别

== 是运算符

对于基本数据类型来说,直接比较值是否相等;
对于引用数据类型(类、接口、数组)来说,比较是否是同一对象(地址是否相同)

equals() 是方法

equals() 是Object类的方法,比较的是对象是否相同;

Object:

    public boolean equals(Object obj) {
        return (this == obj);
    }

如果需要比较值是否相同,则需要重写equals()方法
例如String类的equals方法

String:

public boolean equals(Object anObject) {
        if (this == anObject) { // 首先比较引用对象的地址
            return true;
        }
        if (anObject instanceof String) { //该实例是否属于string类
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {//长度是否相等
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {// 值是否相等
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

测试下
撸代码:

 @Test
    public void testString(){

        System.out.println("基本数据类型:");
        System.out.println(1 == 1); // true
        System.out.println('a' == 'a'); //true

        System.out.println("引用数据类型:");
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1 == s2); // false
        System.out.println(s1.equals(s2)); //true  String类中equals()方法被重写

        System.out.println("自定义类 重写equals()方法:");
        Person na2 = new Person(12, "na");
        Person na1 = new Person(12, "na");
        System.out.println(na1 == na2); // false
        System.out.println(na1.equals(na2)); //true,如果不重写equals方法。默认是从Object类继承过来的方法,则返回false
    }

自定义类重写equals方法

自定义类:

class Person{
    int age;
    String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(age, name);
    }
}

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

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

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