原地址: http://blog.youkuaiyun.com/carterjin/article/details/8048956
在面试或者笔试的时候通常都会问这个问题,但是也查了好多资料,总感觉有些笼统而且不清晰,今天听了一个视频,终于确切的明白了,也比较完整的解释了一下。
==:分两种情况
1、基本类型:值是否相等
2、引用类型:地址是否相等
equals:也分两种情况
1、直接调用Object类的equals方法,通过看Object.java源代码,可以看到
public boolean equals(Object obj){
return (this == obj);
}
方法的注释里有这么一段“for any non-null reference values x
and y
, this method returns true
if and only if x
and y
refer to the same object (x == y
has the value true
)”,翻译过来就是“对于非空的两个引用变量x和y,如果该方法返回true,则由于且只由于x和y同时引用了相同的对象(即地址相等)”。
通过看上面的注释,可以理解,在直接调用object类的equals方法时,是判断地址是否相等的。
2、子类重写了Object类的equals方法,则此时是返回内容是否相等。