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

}

}

结果如下所示:

以上是 java比较两个对象是否相等 的全部内容, 来源链接: utcz.com/z/394268.html

回到顶部