java,equals与==比较

来源:互联网 发布:网络主播黑名单将公布 编辑:程序博客网 时间:2024/06/05 16:19

package com.main;class Person {    private Integer age;    public Person(Integer age) {        this.age = age;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}public class Main {    public static void main(String[] args) {        String str1 = new String("str1");        String str2 = new String("str1");//这是两个不同的对象,存放在堆中不同的位置        System.out.println(str1.equals(str2));//true,String类重写了equals方法        System.out.println(str1==str2);//false        Person p1 = new Person(1);        Person p2 = new Person(1);        System.out.println(p1.equals(p2));//false,没有重写equals方法,所以调用的是Object中的equals方法        System.out.println(p1 == p2);//false    }}重写后:package com.main;class Person {    private Integer age;    public Person(Integer age) {        this.age = age;    }    public Integer getAge() {        return age;    }    public void setAge(Integer 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;        return age.equals(person.age);//重写后是按属性比较    }    @Override    public int hashCode() {        return age.hashCode();    }}public class Main {    public static void main(String[] args) {        String str1 = new String("str1");        String str2 = new String("str1");//这是两个不同的对象,存放在堆中不同的位置        System.out.println(str1.equals(str2));//true,String类重写了equals方法        System.out.println(str1==str2);//false        Person p1 = new Person(1);        Person p2 = new Person(1);        System.out.println(p1.equals(p2));//true,重写后是按属性比较        System.out.println(p1 == p2);//false    }}


















原创粉丝点击