equals和==

首先,在Object中,==和equals没有区别。

在基本数据类型中比较两个值的内容是否相等,

在引用类型型中比较的是两个对象的地址是否相等。

举例:

/**
 * Students类(Object)
 * 
 * @author zhdzb
 *
 */
class Students {

    String name;
    int age;
    char sex;

    public Students(String name, int age, char sex) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}

public class Test {

    public static void main(String[] args) {

        // s1和s2是两个不同的对象
        Students s1 = new Students("张三", 20, '男');
        Students s2 = new Students("张三", 20, '男');

        boolean b1 = s1 == s2;
        boolean b2 = s1.equals(s2);

        System.out.println("s1 == s2:" + b1);
        System.out.println("s1.equals(s2):" + b2);
    }
}

内存图如下:

 执行结果:

 即在不重写equals()方法的情况下,两种比较方式相同。

在String中,equals()得到了重写,当使用==时,依旧比较两个值的地址是否相同,但是使用equals()方法则是一次比较String中的每个char是否相同。

举例:

public class Test {

    public static void main(String[] args) {

        // s1和s2是两个不同的对象,但是內容一样
        String s1 = new String("Hello");
        String s2 = new String("Hello");

        boolean b1 = s1 == s2;
        boolean b2 = s1.equals(s2);

        System.out.println("s1 == s2:" + b1);
        System.out.println("s1.equals(s2):" + b2);
    }
}

 

内存图:

执行结果:

posted @ 2021-06-30 13:04  雪之下。  阅读(47)  评论(0)    收藏  举报