java比较两个对象是否相等

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

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

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

示例代码如下:

Person.java

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

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

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

面试【java比较两个对象是否相等】_自动生成
public class Person {
    private String name;
    private int age;
</span><span style="color: #0000ff">public</span> Person(String name, <span style="color: #0000ff">int</span><span style="color: #000000"> age) {
    </span><span style="color: #0000ff">this</span>.name =<span style="color: #000000"> name;
    </span><span style="color: #0000ff">this</span>.age =<span style="color: #000000"> age;
}

</span><span style="color: #0000ff">public</span><span style="color: #000000"> String getName() {
    </span><span style="color: #0000ff">return</span><span style="color: #000000"> name;
}

</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> setName(String name) {
    </span><span style="color: #0000ff">this</span>.name =<span style="color: #000000"> name;
}

</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> getAge() {
    </span><span style="color: #0000ff">return</span><span style="color: #000000"> age;
}

</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setAge(<span style="color: #0000ff">int</span><span style="color: #000000"> age) {
    </span><span style="color: #0000ff">this</span>.age =<span style="color: #000000"> age;
}

@Override
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> equals(Object o) {
    </span><span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span> == o) <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span><span style="color: #000000">;
    </span><span style="color: #0000ff">if</span> (o == <span style="color: #0000ff">null</span> || getClass() != o.getClass()) <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;

    Person person </span>=<span style="color: #000000"> (Person) o;

    </span><span style="color: #0000ff">if</span> (age != person.age) <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
    </span><span style="color: #0000ff">return</span><span style="color: #000000"> name.equals();
}

@Override
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> hashCode() {
    </span><span style="color: #0000ff">int</span> result =<span style="color: #000000"> name.hashCode();
    result </span>= 31 * result +<span style="color: #000000"> age;
    </span><span style="color: #0000ff">return</span><span style="color: #000000"> result;
}

}

面试【java比较两个对象是否相等】_自动生成
ObjectEquals.java如下所示
面试【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比较两个对象是否相等】_自动生成

结果如下所示:

面试【java比较两个对象是否相等】_java_05

	<p class="postfoot">
		posted on <span id="post-date">2017-11-10 10:24</span> <a href='javascript:void(0)'>