java中equals与==

127 阅读1分钟

java中equals与==

==

  • 当==比较两个基本类型时,==比较的是两个数的值。
  • 当==比较两个引用数据类型时,比较的是两个引用数据类型引用的对象在堆内存的位置。除非是同一个new出来的对象,他们的比较后的结果才为true。

equals

equals是java Object类中自带的,因为Object类是所有类的父类,所以每一个类中都会继承有equals方法,其中Object类关于equals方法的源码是:

image-20200514110633257

image-20200514110739093

public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }
//
public boolean equals(Object obj) {
        return (this == obj);
    }

这个方法的初始默认行为是比较对象的内存地址值。所以我们可以在类中重写这个方法。

比如Integer类中的equals方法:

  public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

就是对两个Integer对象的值进行比较。