equals()函数与“==”的作用有什么不同

发布时间:2020-07-20 10:25:53 作者:Leah
来源:亿速云 阅读:93

这篇文章将为大家详细讲解有关equals()函数与“==”的作用有什么不同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

首先,来看看它们的区别:

2、覆盖equals()方法的情况

修改上面的EqualsTest,覆盖equals()方法:

public class EqualsTest {
    public static void main(String[] args) {
        // 新建2个相同内容的Person对象,
        // 再用equals比较它们是否相等
        User user1 = new User("James", 100);
        User user2 = new User("James", 100);
        System.out.printf("比较结果:" + user1.equals(user2));
    }
 
    /**
     * @desc User类。
     */
    static class User {
        int age;
        String name;
 
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
 
        public String toString() {
            return name + " - " + age;
        }
 
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            User other = (User) obj;
            if (age != other.age)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
    }
}

运行结果:

true

结果分析:我们在EqualsTest.java 中重写了User的equals()函数:当两个User对象的 name 和 age 都相等,则返回true。因此,运行结果返回true。

== 的作用

“==”:它的作用是判断两个对象的地址是不是相等。即判断引用对象是不是指向的堆中的同一个对象,我们知道,凡是new出来的对象都在堆中。而对象的引用都存放在栈中,具体来讲就是放在栈帧中,我们来看下面一段代码:

public static void main(String[] args) {
        User user1 = new User("James", 100);
        User user2 = new User("James", 100);
        System.out.println("user1.equals(user2):" + user1.equals(user2));
        System.out.println("user1==user2:" + (user1==user2));
}

输出结果:

user1.equals(user2):true
user1==user2:false

指向的是堆中两块不同的区域,所以用 "==" 比较时返回的是false。

关于equals()函数与“==”的作用有什么不同就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. Java中==与equals()有什么区别
  2. equals()如何在Java中使用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

equals()

上一篇:详解redis如何实现分布式锁

下一篇:C#设计模式之桥接

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》