首页 > 文章列表 > Java Object类equals方法怎么用

Java Object类equals方法怎么用

java Object equals
485 2023-05-02

Java Object类equals方法怎么用

基本概念:

  • Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入;

  • Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象

equals()方法:比较两个对象是否同一

      如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等。如果两个引用对象指的是同一个对像,则称这两个变量同一。Object类中定义的equals 函数原型为:

public boolean equals(Object);他是判断两个对象是否同一,并不是是否相等

  •  ①只能处理引用类型变量

  •  ②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等

package com.example.demo.test;



public class Person {



    private String userName;

    private String age;



    public String getUserName() {

        return userName;

    }



    public void setUserName(String userName) {

        this.userName = userName;

    }



    public String getAge() {

        return age;

    }



    public void setAge(String age) {

        this.age = age;

    }

}
package com.example.demo.test;



public class Test {



    public static void main(String[] args) {

        Person p1 = new Person();

        Person p2 = new Person();

        System.out.println(p1.equals(p2));

        System.out.println(p1 == p2);



        /*

         * String类重写了Object类的equals()方法,比较是两个对象的实体内容"是否完全相同。

         */

        String s1 = new String("AA");

        String s2 = new String("AA");

        System.out.println(s1.equals(s2));

        System.out.println(s1 == s2);

    }

}

从运行结果可以看到的是Object中的equals方法比较的是两个对象是否同一,

而String类中的equals方法比较的是字符串的value是否相等。 请看String.java中equals的方法

public boolean equals(Object anObject) {

        if (this == anObject) {

            return true;

        }

        if (anObject instanceof 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;

    }