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不是同一个人");
            }
        }

    结果如下所示:

  • 相关阅读:
    解决IE6不支持position:fixed的bug
    响应式Web设计基础
    多行文本溢出显示省略号(…)全攻略
    解读CSS布局之-水平垂直居
    理解CSS中BFC
    七个你可能不了解的CSS单位
    屏蔽系统热键钩子Hook程序
    Win 2008 r2 远程桌面多用户登陆,一用户多登陆配置
    把Excel转换成DataTable,Excel2003+
    DataGridView不显示未绑定的列-AutoGenerateColumns
  • 原文地址:https://www.cnblogs.com/expiator/p/7813247.html
Copyright © 2011-2022 走看看