java中equals与==
==
- 当==比较两个基本类型时,==比较的是两个数的值。
- 当==比较两个引用数据类型时,比较的是两个引用数据类型引用的对象在堆内存的位置。除非是同一个new出来的对象,他们的比较后的结果才为true。
equals
equals是java Object类中自带的,因为Object类是所有类的父类,所以每一个类中都会继承有equals方法,其中Object类关于equals方法的源码是:
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对象的值进行比较。