zoukankan      html  css  js  c++  java
  • java比较两个对象是否相等

    java比较两个对象,可以通过重写equals()实现。

    1.比较对象时, ==比较的是地址,而equals()比较的是对象内容

    2.重写equals()方法必须重写hashCode()

    示例代码如下:

    Person.java

    可以自动生成get()、set()、构造函数、equals()、hashCode等方法。

    Idea选择类的代码,写入属性名,如下为name和age,然后右键-->Generate,就可以自动生成了。

    eclipse类似。搜索下快捷键也可以自动生成。

    public class Person {
        private String name;
        private int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
    
            Person person = (Person) o;
    
            if (age != person.age) return false;
            return name.equals(person.name);
        }
    
        @Override
        public int hashCode() {
            int result = name.hashCode();
            result = 31 * result + age;
            return result;
        }
    }
    ObjectEquals.java如下所示
    public class ObjectEquals {
        public static void main(String[] args) {
            Person person1=new Person("lin",25);
            Person person2=new Person("lin",25);
            System.out.println("通过==比较对象:");
            if(person1==person2) {
                System.out.println("person1和person2是同一个人");
            }else {
                System.out.println("person1和person2不是同一个人");
            }
            System.out.println("通过重写equals()和hashCode()比较对象:");
            if(person1.equals(person2)) {
                System.out.println("person1和person2是同一个人");
            }else {
                System.out.println("person1和person2不是同一个人");
            }
        }

    结果如下所示:

  • 相关阅读:
    node.js 安装后怎么打开 node.js 命令框
    thinkPHP5 where多条件查询
    网站title中的图标
    第一次写博客
    Solution to copy paste not working in Remote Desktop
    The operation could not be completed. (Microsoft.Dynamics.BusinessConnectorNet)
    The package failed to load due to error 0xC0011008
    VS2013常用快捷键
    微软Dynamics AX的三层架构
    怎样在TFS(Team Foundation Server)中链接团队项目
  • 原文地址:https://www.cnblogs.com/expiator/p/7813247.html
Copyright © 2011-2022 走看看