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和==

 执行结果:

equals和==

 即在不重写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);
    }
}

 

内存图:

equals和==

执行结果:

equals和==

equals和==

上一篇:rancher 集群高可用 1 - 环境配置 ntpd ssh helm kubectl等


下一篇:fastadmin添加自定义按钮