• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搜讯息吧

equals()函数与“==”的作用分别是什么_JAVA教程,equals(),==

JAVA ytg3114 3个月前 (07-10) 147次浏览 0个评论 扫描二维码

continue语句的作用是什么_JAVA教程

continue语句的作用是:用来结束当前循环,并进入下一次循环,即仅仅这一次循环结束了,并不是所有的循环结束了,后边的循环依旧进行。continue语句只能用于循环语句中。

equals()函数与“==”的作用分别是什么_JAVA教程,equals(),==

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

(推荐学习:java入门程序)

  • equals()方法用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断;

  • “==” 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。

equals()作用

equals() 的作用是用来判断两个对象是否相等。

equals() 定义在JDK的Object.java中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。源码如下:

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

既然Object.java中定义了equals()方法,这就意味着所有的Java类都实现了equals()方法,所有的类都可以通过equals()去比较两个对象是否相等。

但是,我们已经说过,使用默认的“equals()”方法,等价于“==”方法。因此,我们通常会重写equals()方法:若两个对象的内容相等,则equals()方法返回true;否则,返回fasle。

下面根据”类是否覆盖equals()方法”,将它分为2类。

  • 若某个类没有覆盖equals()方法,当它通过equals()比较两个对象时,实际上是比较两个对象是不是同一个对象。这时,等价于通过“==”去比较这两个对象。

  • 我们可以覆盖类的equals()方法,来让equals()通过其它方式比较两个对象是否相等。通常的做法是:若两个对象的内容相等,则equals()方法返回true;否则,返回fasle。

下面,举例对上面的两种情况进行说明:

java中怎么定义接口_JAVA教程

java中定义接口的方法是:接口通常以interface关键字来声明。接口在Java语言中是一个抽象类型,是抽象方法的集合。声明语法格式:【[修饰符] interface 接口名 {声明变量 抽象方法}】。

1、没有覆盖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;
        }
    }
}

运行结果:

false

结果分析:

我们通过 user1.equals(user2) 来“比较user1和user2是否相等时”,实际上,调用的Object.java的equals()方法,即调用的 (user1==user2) 。

它是比较“p1和p2是否是同一个对象”。而由 user1 和 user2 的定义可知,它们虽然内容相同;但它们是两个不同的对象,因此,返回结果是false。

(视频教程推荐:java视频教程)

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()函数与“==”的作用分别是什么的详细内容,更多请关注ki4网其它相关文章!

Java中变量必须先定义后使用么_JAVA教程

Java中变量必须先定义后使用。变量使用时,可以在声明变量的同时进行初始化,也可以先声明后赋值。变量只能赋一个值,但是可以修改多次。在main方法中定义的变量必须先赋值,然后才能输出。


搜讯息 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:equals()函数与“==”的作用分别是什么_JAVA教程,equals(),==
喜欢 (0)
[1353713598@qq.com]
分享 (0)
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址