javaSE-比较对象时equals和==的区别

equals和==的区别

  • 比较对象时equals和==比较的都是对象的内存地址。
  • 在String中equals比较的是对象的内容,而==比较的是内存地址。
public class EqualsTest {
    public static void main(String[] args) {
        //当对象内存地址不同
        Object o1 = new Object();
        Object o2 = new Object();
        System.out.println(o1 == o2);
        System.out.println(o1.equals(o2));
        //false
        //false

        //当对象内存地址相同
        o2 = o1;
        System.out.println(o1 == o2);
        System.out.println(o1.equals(o2));
        //true
        //true

        //String对象内容相同,地址不同
        String s1 = new String("123");
        String s2 = new String("123");
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
        //false
        //true

        //String对象地址内容都相同
        String s3 = "456";
        String s4 = "456";
        //常量池中所有相同的常量都会指向同一地址,所以s3和s4的地址是相同的
        System.out.println(s3.hashCode() + " " + s4.hashCode());
        System.out.println(s3 == s4);
        System.out.println(s3.equals(s4));
        //51669 51669
        //true
        //true
    }
}

posted @ 2022-04-29 15:38  clearHeart99  阅读(22)  评论(0编辑  收藏  举报