前言
“请说说 == 和 equals() 的区别?“ 相信大家伙对这句话肯定很熟了,这是一道经典的面试题。
今天这篇文章咱们就来刨析一下其中的区别,首先来了解下这两个分别是作什么用的。
== 的作用
分为两种情况:
1,基础数据类型中:用于比较两个变量的值是否相等。
2,引用数据类型中:用于比较两个对象的地址值是否相等。
equals() 的作用
equals() 在 Object 类中的默认实现作用是:用于比较两个对象是否相同。
equals() 方法在超类也就是 Object 中的实现如下:
public boolean equals(Object obj) {
return (this == obj);
}
也就是判断了两个对象的地址值是否相同(是否是同一个对象)。
除 Object 之外的所有类都间接或直接的继承了 Object 类,如果这些类使用默认的 equals() 方法,那么就等同于 == ,也就是比较两个对象是否相同。但是一般情况下,这些类会根据自己的实际逻辑去重写 equals() 方法。
如 String 类,String 类的 equals() 方法实现如下: